Hoe maak ik een redirect in PHP?

Is het mogelijk om een gebruiker door te verwijzen naar een andere pagina met behulp van PHP?

Stel dat de gebruiker naar www.example.com/page.php gaat en ik wil hem doorverwijzen naar www.example.com/index.php, hoe zou ik dat doen zonder gebruik te maken van een meta refresh? Is het mogelijk?

Dit zou zelfs mijn pagina's kunnen beschermen tegen onbevoegde gebruikers.

Gebruik de header() functie om een HTTP Location header te versturen:

header('Location: '.$newURL);

In tegenstelling tot wat sommigen denken, heeft die() niets te maken met redirection. Gebruik het alleen als je wilt redirecten in plaats van normaal uitvoeren.

Bestand voorbeeld.php:

<?php
    header('Location: static.html');
    $fh = fopen('/tmp/track.txt', 'a');
    fwrite($fh, $_SERVER['REMOTE_ADDR'] . ' ' . date('c') . "\n");
    fclose($fh);
?>

Resultaat van drie executies:

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

Hervatten — verplichte die()/exit() is een of andere urban legend dat niets te maken heeft met echte PHP. Het heeft niets te maken met client "respecteren" de Location: header. Het verzenden van een header stopt de uitvoering van PHP niet, ongeacht de gebruikte client.

Commentaren (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);

Vergeet niet te sterven()/exit()!

Commentaren (12)

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

Commentaren (1)