Ist es möglich, einen Benutzer mit Hilfe von PHP auf eine andere Seite umzuleiten?
Sagen wir, der Benutzer geht zu www.example.com/page.php
und ich möchte ihn zu www.example.com/index.php
umleiten, wie würde ich das tun, ohne einen Meta-Refresh zu verwenden? Ist das möglich?
Dies könnte meine Seiten sogar vor unbefugten Benutzern schützen.
Verwenden Sie die Funktion header()
, um einen HTTP Location
-Header zu senden:
header('Location: '.$newURL);
Im Gegensatz zu dem, was einige denken, hat die()
nichts mit Umleitung zu tun. Verwenden Sie es nur, wenn Sie eine Umleitung anstelle der normalen Ausführung wünschen.
Datei example.php:
<?php
header('Location: static.html');
$fh = fopen('/tmp/track.txt', 'a');
fwrite($fh, $_SERVER['REMOTE_ADDR'] . ' ' . date('c') . "\n");
fclose($fh);
?>
Ergebnis von drei Ausführungen:
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
Fortsetzen — das obligatorische die()
/exit()
ist eine urbane Legende, die nichts mit dem tatsächlichen PHP zu tun hat. Es hat nichts damit zu tun, dass der Client den Location:
-Header "respektiert". Das Senden eines Headers stoppt nicht die Ausführung von PHP, unabhängig vom verwendeten Client.
function Redirect($url, $permanent = false)
{
if (headers_sent() === false)
{
header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);
}
exit();
}
Redirect('http://www.google.com/', false);
Vergessen Sie nicht die()/exit()!