Comment rediriger une page Web avec PHP
1. Utilisez la fonction header() avec exit()
En PHP, vous pouvez utiliser la fonction header () (elle envoie un en-tête HTTP brut à un client) pour effectuer une redirection d'une page Web vers une autre.
Il est possible d'utiliser la fonction header () pour envoyer un nouvel en-tête HTTP, mais celui-ci doit être envoyé au navigateur avant tout HTML ou texte (par exemple, avant la remarque).
Exemple
<?php
header('Location: //www.w3docs.com');
// or die();
exit();
?>
L'utilisation de exit () sur une redirection est d'empêcher la page d'afficher le contenu restant (c'est-à-dire des pages restreintes).
2. Utilisez la function header avec ob_start() et ob_end_flush()
Exemple
<?php
ob_start();
//this should be first line of your page header('Location: target-page.php'); ob_end_flush();
//this should be last line of your page ?>
3. Utilisez la fonction Helper
Exemple
<?php
function Redirect($url, $permanent = false)
{
header('Location: ' . $url, true, $permanent ? 301 : 302);
exit();
}
Redirect('//www.w3docs.com/', false);
Cet exemple est plus flexible:
<?php
function redirect($url, $statusCode = 303)
{
header('Location: ' . $url, true, $statusCode);
die();
}
4. Il y a des cas particuliers si vous exécutez en CLI (les redirections ne peuvent pas se produire et ne devraient donc pas sortir ()) ou si votre serveur Web exécute PHP en tant que CGI (F)
Exemple
<?php
function Redirect($url, $code = 302)
{
if (strncmp('cli', PHP_SAPI, 3) !== 0) {
if (headers_sent() !== true) {
if (strlen(session_id()) > 0) {
// if using sessions
session_regenerate_id(true); // avoids session fixation attacks
session_write_close(); // avoids having sessions lock other requests
}
if (strncmp('cgi', PHP_SAPI, 3) === 0) {
header(sprintf('Status: %03u', $code), true, $code);
}
header('Location: ' . $url, true, preg_match('~^30[1237]$~', $code) > 0 ? $code : 302);
}
exit();
}
}
En savoir plus sur la façon de rediriger les pages Web avec HTML, JavaScript, Apache et Node.js