temporalizzare un redirect

Ciao!!

volevo sapere come posso fare a reindirizzare un utente ad un'altra pagina dopo averli fatto visualizzare prima una scritta. Usando il metodo "header("location: privato.php")" l'utente viene immediatamente reindirizzato e non posso usare "echo" per stamparli prima un avviso..... Il pezzo di script in questione è il seguente:

if(mysql_num_rows($query) > 0)

                 {

                              Header("location: privato.php");

                exit;

.................................................................................................

Grazie. :)

inviato 11 anni fa
MGbyte78
X 0 X

prova con questo:

<?php 

if(mysql_num_rows($query) > 0)
{
  header("Refresh:5; URL=privato.php");
  echo "Questo messaggio sarà visualizzato per 5 secondi";
  exit;
}

?>

Chiaramente puoi variare la durata della visualizzazione del messaggio sostituendo il 5 con il numero di secondi che vuoi!

 :bye:

risposto 11 anni fa
Nico Colonna
X 0 X

Gli headers sono delle informazioni che vengono inviate al browser e che precedono l'html della pagina, pertanto non possono essere utilizzati nel caso tu voglia mostrare del contenuto.

Una soluzione consiste nell'usare un meta tag:

<meta http-equiv="Refresh" content="4; URL=nuova_pagina.php">

dove 4 sono i secondi di attesa prima del redirect

Oppure con un Javascript:  location.href = "nuova_pagina.php"

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Scusa Gianni, non so se è magia o se il mio computer è stato progettato per Bill Gates, ma a me funziona...

In pratica, io controllo il contenuto della variabile GET passata nell'url del link, se questa è corretta passo il contenuto, altrimenti mostro l'errore ed effettuo il refresh a $home.

<?php
switch ($id){

case "...":
   break;

case "...":      
  if ($op=="...") {include($path."calendario.php");}
  elseif ($op=="...") {
    //Controlla $item 
    if ((is_numeric($item))and(strlen($item)==2)and($item<=$giornata))
      {include($path."/risultati/giornata".$item.".php");}
    else {header("Refresh:5; URL=".$home);
      echo "ERRORE INATTESO.";
      exit;}
  }                  
break;

}

?>

da cosa può dipendere? Può essere che in remoto non funzioni?

 :bye:

risposto 11 anni fa
Nico Colonna
modificato 11 anni fa
X 0 X

il mio ragionamento vale solo per l'header "location" che non prevede un tempo d'attesa. Così il browser non perde tempo a mostrare l'HTML.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Grazie ragazzi!!! Ho risolto il mio problema con il refresh...

 :bye:

risposto 11 anni fa
MGbyte78
X 0 X

ciao,

 scusate se riapro la discussione ma mi e' poco chiara....

ho una funzione redirect che non fa altro che header(location:url);

prima di questa istruzione ho un echo....

io vorrei che per 5 sec mi resti nella stessa pagina cosi da poter leggere il msg che voglio far apparire con echo e dopo 5 secondi sia reindirizzato alla nuova pagina url.

es....

la mia pagina php e':

echo "ciao";

redirect("home.php");

ciao non appare a video ma appare immediatamente home.php

come posso dirgli di aspettare 5 sec?

risposto 10 anni fa
purpitta
X 0 X

non puoi ottenere quel risultato con l'istruzione header. Devi usare o un Javascript oppure un tag meta del tipo:

 <meta http-equiv="REFRESH" content="5; URL=http://www.miosito.com">

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

grazie mille....  :)

risposto 10 anni fa
purpitta
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda