Homepage -> Guida PHP



REDIRECT DI PAGINA IN PHP



Con il linguaggio PHP è possibile creare dei redirect a siti esterni o interni al vostro attraverso l'uso della funzione header().
Per redirect si intende un reindirizzamento ad un altro URL, interno o esterno al vostro sito. In questo modo si può creare un collegamento esterno, direttamente usando il linguaggio PHP, senza far apparire a video nessuna pagina HTML del nostro sito.


header("Location: http://www.php.net/");


Il Redirect serve quindi per inviare "header http" e cioè redirezionare il visitatore su un'altra pagina web.
"Location" non trasmette solo un header al browser, ma anche un REDIRECT con codice di stato (302).

Vediamo un esempio pratico; di seguito è riportato il codice e l'esempio per il reindirizzamento di pagina in base a quale link viene cliccato dal visitatore; se si clicca il primo link si accede al sito di Google, mentre sul secondo su HTML.it.


Google HTML.it
<?php
if($_GET["url"]=="google")
    header("Location: http://www.google.it");
else header("Location: http://www.html.it");
?>


Come potete vedere entrambi i links non puntano direttamente ai corrispondenti siti web, ma al file header.php, di cui è riportato sopra il codice. Affinchè questo possa funzionare, bisogna accodare ad ogni link la coppia url=valore (detta anche "query string").


IMPORTANTE:

Le funzioni header non richiedono nessuna uscita prima della loro esecuzione. In pratica se scrivete anche un solo echo"......"; la pagina con il redirect genera un errore (almeno nella versione PHP 4.3).

Oltre a questo, se prima del redirect avete posizionato un collegamento errato con il database senza la segnalazione di errore, riceverete a video solo l'errore del redirect, mentre in realtà l'errore è da un'altra parte.

In caso di errore il consiglio è di togliere il redirect e testare tutto lo script che lo precede, successivamente reinserite la riga header e riprovate.



HEADER e EXIT

Spesso viene accodata all'istruzione header, la funzione exit(), che blocca il programma senza leggere le funzioni ed il codice sottostante.


<?
.... // Eventuali istruzioni eseguite (tipo applicazioni su database)
header("location: http://....");
exit;
....// Altre istruzioni che non sono mai eseguite
?>