Kako ustvarim preusmeritev v PHP?

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.

Komentarji (4)
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()!

Komentarji (12)

header( 'Lokacija: http://www.yoursite.com/new_page.html' );

Komentarji (1)