Corsi on-line

Temporizzare il redirect con PHP

Frequentando i forum dedicati a PHP mi capita spesso di visualizzare discussioni in cui gli utenti affermano di utilizzare redirect realizzati in Javascript perché la funzione header() non permette di definire la durata del caricamento di una pagina prima del redirect verso un’altra risorsa.

Ciò non è assolutamente vero, header() mette infatti a disposizione un attributo, denominato refresh, che permette di definire il tempo di attesa prima di un redirect espresso in numero di secondi; si osservi per esempio il seguente listato:

<?php
  header( "refresh:5;url=index.php" );
  echo "Se il tuo browser non supporta il redirect clicka <a href=\"index.php\">qui</a>.";
?>

Nel caso proposto il redirect alla pagina “index.php” avverrà dopo 5 secondi di attesa; è possibile anche invertire le due righe d’istruzione mostrate evitando che l’invio di un output prima della funzione header() produca un errore da parte del browser, ciò sarà possibile utilizzando le funzioni ob_start() e ob_end_flush():

<?php
   ob_start();
   echo "Se il tuo browser non supporta il redirect clicka <a href=\"index.php\">qui</a>.";
   header( "refresh:5;url=index.php" );
   ob_end_flush();
?>

In questo modo ob_start() devierà il flusso dei dati verso il buffer dedicato all’esecuzione dell’applicazione che verrà liberato al momento della chiamata a ob_end_flush().

Post correlati
I più letti del mese
Tematiche