Come posso fare un reindirizzamento in PHP?

È possibile reindirizzare un utente a una pagina diversa attraverso l'uso di PHP?

Diciamo che l'utente va su www.example.com/page.php e io voglio reindirizzarlo su www.example.com/index.php, come potrei farlo senza l'uso di un meta refresh? È possibile?

Questo potrebbe anche proteggere le mie pagine da utenti non autorizzati.

Usate la funzione [header() per inviare un'intestazione HTTP Location:

header('Location: '.$newURL);

Contrariamente a quanto alcuni pensano, la funzione die() non ha nulla a che fare con il reindirizzamento. Usatelo solo se volete reindirizzare invece della normale esecuzione.

File example.php:

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

Risultato di tre esecuzioni:

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

Riprendere — obbligatoriamente die()/exit() è una leggenda metropolitana che non ha nulla a che fare con il vero PHP. Non ha niente a che fare con il client "che rispetta" l'intestazione Location:. L'invio di un'intestazione non ferma l'esecuzione di PHP, indipendentemente dal client utilizzato.

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

Non dimenticare di die()/exit()!

Commentari (12)

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

Commentari (1)