Er det muligt at omdirigere en bruger til en anden side ved hjælp af PHP?
Lad os sige at brugeren går til www.example.com/page.php
og jeg vil omdirigere dem til www.example.com/index.php
, hvordan kan jeg gøre det uden brug af en meta refresh? Er det muligt?
Dette kunne endda beskytte mine sider mod uautoriserede brugere.
Brug header()
-funktionen til at sende en HTTP Location
-header:
header('Location: '.$newURL);
I modsætning til hvad nogle tror, har die()
intet at gøre med omdirigering. Brug det kun hvis du ønsker at omdirigere i stedet for normal udførelse.
Fil example.php:
<?php
header('Location: static.html');
$fh = fopen('/tmp/track.txt', 'a');
fwrite($fh, $_SERVER['REMOTE_ADDR'] . ' ' . date('c') . "\n");
fclose($fh);
?>
Resultat af tre udførelser:
bart@hal9k:~> cat /tmp/track.txt
127.0.0.1 2009-04-21T09:50:02+02:00
127.0.0.1 2009-04-21T09:50:05+02:00
127.0.0.1 2009-04-21T09:50:08+02:00
Genoptagelse — den obligatoriske die()
/exit()
er en urban legende, som ikke har noget med PHP at gøre. Det har intet at gøre med at klienten "respekterer" Location:
headeren. Afsendelse af en header stopper ikke PHP-eksekveringen, uanset hvilken klient der anvendes.
function Redirect($url, $permanent = false)
{
if (headers_sent() === false)
{
header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);
}
exit();
}
Redirect('http://www.google.com/', false);
Glem ikke at die()/exit()!