Pour créer des redirections en PHP, vous pouvez utiliser la fonction PHP header() pour rediriger un utilisateur vers une autre page.
Le code PHP de l’exemple suivant redirigera en PHP l’utilisateur de la page dans laquelle il est placé vers l’URL https://www.gekkode.com/page-a.php
. Vous pouvez également spécifier des URL relatives.
<?php
header("Location: https://www.gekkode.com/page-a.php");
exit();
?>
Si vous souhaitez rediriger les utilisateurs de l’ancienne page vers une nouvelle page de façon permanente, mentionnez également le code de réponse HTTP dans la fonction header() comme indiqué dans l’exemple suivant, afin que les moteurs de recherche transfèrent le « page rank » de l’ancienne page vers la nouvelle.
<?php
// 301 Redirection permanent
header("Location: https://www.gekkode.com/page-a.php", true, 301);
exit();
?>
Si le code de redirection n’est pas spécifié explicitement, par exemple, header(« Location : URL ») prend par défaut la valeur 302 (Found). Pour une redirection temporaire, utilisez le code d’état HTTP 307.
Pourquoi utiliser die() ou exit() dans mes redirections PHP?
header('Location : https://www.gekkode.com/page-a.php')
, votre script peut continuer de s’exécuter et entraîner un comportement inattendu. Cela peut par exemple entraîner la divulgation d’un contenu que vous vouliez en fait empêcher par la redirection (HTTP 301). Ce qui précède peut ne pas être directement visible pour l’utilisateur final, car le navigateur peut ne pas le rendre (en raison de la redirection 301). En conclusion, les fonctions exit() et die() empêchent le script de continuer. C'est quoi la différence entre la fonction die() et exit() ?
A première vue, il semble qu’il n’y en ait aucune. Cependant, en PHP, il y a une différence distincte dans la sortie de l’en-tête. Dans les exemples ci-dessous, j’ai choisi d’utiliser un en-tête différent, mais pour montrer la différence entre exit() et die(), cela n’a pas d’importance.
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
Résultat
HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
Résultat
HTTP/1.1 304 Not Modified
Connection: close
Conclusion
Ainsi, die() ferme la connexion et exit() ne le fait pas. Le fait de vouloir garder la connexion ouverte et persistante ou de la fermer dépend des performances. Les deux ont des avantages et des inconvénients et dépendent de vos besoins spécifiques, vous pouvez en apprendre plus sur les connexion persistante sur wikipédia.
Retrouvez plus d’articles sur le PHP sur mon blog, dans la partie dédier au PHP.