Header php true or false ?

WRInaute accro
Bonjour,

Je dois rediriger
---https://monsite.fr/code_s.php?id=1189
vers
---https://monsite.fr/code/php/applications/1189_calculette-basique-en-php-et-html

Vu que j'ai pas loin de 1k d'urls a traiter, je veux être certain de bien utiliser les headers

voici le code, est-ce bon ?

PHP:
if (isset($_GET['id'])) {
    
    $id_esc = $_GET['id'];
    $q_s = $conn->query("SELECT * FROM $table_mysql WHERE idx = '$id_esc' ");

    $r_s = mysqli_fetch_array($q_s);

    // La requête est vide
     if ($q_s->num_rows == 0) {
        header('Status: 301 Moved Permanently', FALSE, 301);
        header('Location: ' . $url_site);
        exit;
    }
    else {
    // C'est correct, on fait la redirection sur la page 
    $url = url_code_source($r_s['idx'], $r_s['cat'],$r_s['titre']);
    $url = $url_site.$url;
    header('Location: ' . $url, TRUE, 301);

    }
  }
 else
 {
 // Pas de $_GET['id'] identifié
 header('Location: ' . $url_site,  FALSE, 301);

 }
 
WRInaute accro
Attention à la faille d'injection SQL :
Code:
?id=' OR 1=1; DROP TABLE users;--

Sinon ça à l'air bon, suffit de tester les entêtes avec un outil.
 
WRInaute impliqué
Ça ne serait pas plus simple comme ça ?

PHP:
$page = "";
if (is_numeric($_GET['id'])) {
   $sql = "SELECT * FROM $table_mysql WHERE idx = " . (int) $_GET['id']
   $qr = $conn->query($sql);
   // page trouvée
   if ($qr->num_rows) {
      $row = mysqli_fetch_array($qr);
      $page = url_code_source($row['idx'], $row['cat'],$row['titre']);
   }
}

header('Location: ' . $url_site . $page,  TRUE, 301);
exit;
 
Dernière édition:
WRInaute discret
if (isset($_GET['id']) && is_numeric($_GET['id'])) {

// Sécurisation de l'ID (on force l'entier)
$id_esc = intval($_GET['id']);

// Utilisation de mysqli_query (assurez-vous que $conn est bien votre lien de connexion)
$q_s = $conn->query("SELECT idx, cat, titre FROM $table_mysql WHERE idx = $id_esc LIMIT 1");

if ($q_s && $q_s->num_rows > 0) {
$r_s = $q_s->fetch_assoc();

// Construction de l'URL propre
$slug = url_code_source($r_s['idx'], $r_s['cat'], $r_s['titre']);
$url_finale = $url_site . $slug;

// Redirection 301 Propre
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $url_finale);
exit;
} else {
// ID inconnu en BDD -> Redirection vers l'accueil ou 404
header("Location: " . $url_site, true, 301);
exit;
}
} else {
// Pas d'ID ou format invalide -> Retour accueil
header("Location: " . $url_site, true, 301);
exit;
}
 
WRInaute discret
En utilisant intval(), vous fermez la porte aux injections. En utilisant exit immédiatement après chaque redirection, vous stoppez l'exécution du script, ce qui économise des ressources serveur et évite que le reste du code (s'il y en a) ne s'exécute inutilement.
 
WRInaute accro
Perso j'aime bcp le petit code compact de @colonies, après tu sais les ressources serveur j'men cale de ouf vu la capacité des serveurs que l'on a aujourd'hui, et niveau injection en mode lecture c'est pas trop risqué si tout n'est pas hyper conforme, et j'ai posté surtout pour savoir a quoi correspondait FALSE et TRUE; mais merci pour tes conseils ;)
 
WRInaute discret
Merci de commencer vos réponses par "Généré par IA".
Un peu d'honnêteté.
Même si c'est pas du côté des "voyants" qu'on peut effectivement en trouver...
Merci de commencer par bonjour je sais que la politesse n’est pas votre coutume la diffamation oui , message signalé
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut