Ali je mogoče z uporabo PHP uporabnika preusmeriti na drugo stran?
Recimo, da uporabnik obišče stran www.example.com/page.php
in ga želim preusmeriti na stran www.example.com/index.php
, kako bi to storil brez uporabe meta osvežitve? Ali je to mogoče?
S tem bi lahko celo zaščitil svoje strani pred nepooblaščenimi uporabniki.
Uporabite funkcijo header()
za pošiljanje HTTP Location
header:
header('Location: '.$newURL);
V nasprotju s tem, kar mislijo nekateri, funkcija die()
nima nič opraviti s preusmerjanjem. Uporabite ga samo, če želite preusmeriti namesto običajnega izvajanja.
Datoteka example.php:
<?php
header('Location: static.html');
$fh = fopen('/tmp/track.txt', 'a');
fwrite($fh, $_SERVER['REMOTE_ADDR'] . ' ' . date('c') . "\n");
fclose($fh);
?>
Rezultat treh izvedb:
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
Nadaljevanje — obvezno die()
/exit()
je nekakšna urbana legenda, ki nima nobene zveze z dejanskim PHP. Nima nobene zveze z odjemalčevim "spoštovanjem" glave Location:
. Pošiljanje glave ne ustavi izvajanja PHP ne glede na uporabljenega odjemalca.
function Redirect($url, $permanent = false)
{
if (headers_sent() === false)
{
header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);
}
exit();
}
Redirect('http://www.google.com/', false);
Ne pozabite na die()/exit()!