Je možné presmerovať používateľa na inú stránku pomocou PHP?
Povedzme, že používateľ prejde na stránku www.example.com/page.php
a ja ho chcem presmerovať na stránku www.example.com/index.php
, ako by som to urobil bez použitia metaobnovenia? Je to možné?
Mohlo by to dokonca ochrániť moje stránky pred neoprávnenými používateľmi.
Pomocou funkcie header()
odošlete HTTP hlavičku Location
:
header('Location: '.$newURL);
Na rozdiel od toho, čo si niektorí myslia, funkcia die()
nemá nič spoločné s presmerovaním. Používajte ho len, ak chcete presmerovať namiesto normálneho vykonávania.
Súbor example.php:
<?php
header('Location: static.html');
$fh = fopen('/tmp/track.txt', 'a');
fwrite($fh, $_SERVER['REMOTE_ADDR'] . ' ' . date('c') . "\n");
fclose($fh);
?>
Výsledok troch vykonaní:
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
Pokračovanie — povinné die()
/exit()
je nejaká mestská legenda, ktorá nemá nič spoločné so skutočným PHP. Nemá nič spoločné s tým, že klient "rešpektuje" hlavičku Location:
. Odoslanie hlavičky nezastaví vykonávanie PHP bez ohľadu na použitého klienta.
function Redirect($url, $permanent = false)
{
if (headers_sent() === false)
{
header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);
}
exit();
}
Redirect('http://www.google.com/', false);
Nezabudnite na die()/exit()!