Comment créer une redirection en PHP

php redirect to url

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 redirect to url
<?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 redirect to url
<?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?

Si vous ne mettez pas un die() ou un exit() après votre 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.

exit()
<?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
die()
<?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.

Nouveau Tutoriel

Newsletter

Ne manquez jamais les nouveaux conseils, tutoriels et autres.

Pas de spam, jamais. Nous ne partagerons jamais votre adresse électronique et vous pouvez vous désabonner à tout moment.