Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Aspettando... l'header!

    Ciao, ho constatato che la funzione header non blocca l'esecuzione di uno script quando dopo la stessa vi è altro codice.
    Nel senso che spedisci correttamente l'header ma continuando il codice, diciamo che questa istruzione viene "scavalcata" dalle successive. Quindi mi viene da chiedermi come fare per far rispettare questa istruzione in caso di chiamata...

    Allora, sicuramente ci sono migliaia di modi. Io ne elenco un paio e vorrei avere i vostri giudizi su quale forma è la più corretta.

    1) header("location: ...") or die();

    2) header("location: ...");
    die();

    3) header("location: ...");
    sleep(1);

    Che dite?! Io usavo la 3° ma non mi sembra corretta in quanto si da una tempistica che può sessere sufficiente o meno a seconda del server.
    Ho iniziato ad usare la 1°, perchè mi sembra che l'interprete PHP attenda che l'header sia stato correttamente spedito per controllare la parte successiva d'istruzione (... or die(). E' così?!

  2. #2

  3. #3
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858

    Re: Aspettando... l'header!

    Originariamente inviato da cemsal
    1) header("location: ...") or die();
    in questo caso il die arriva se la funzione header fallisce.


    Originariamente inviato da cemsal
    2) header("location: ...");
    die();
    corretto.


    Originariamente inviato da cemsal
    3) header("location: ...");
    sleep(1);
    sbagliato, in quanto sleep "ritarda" php per un tot di secondi.




    think simple think ringo

  4. #4
    header può essere usato per centomila cose diverse, quindi è normale che non termini l'esecuzione

    comunque

    header('Location: pagina.php');
    exit();

    questo funziona perfettamente se ovviamente prima non hai espedito dati al browser ^^

  5. #5
    Grazie ad entrambi.
    Quindi secondo voi la soluzione:
    header("location: ...") or die();
    non è da prendere in considerazione?!

    Pensavo che l'interprete PHP fosse in questo caso "costretto" ad attendere il buon esito della funzione header prima di proseguire e quindi incontrando il die(), e di conseguenza quindi nell'attesa il redirect entrerebbe in azione.

    Grazie comunque, adotterò la soluzione:
    header("location: ...");
    die();

    CIAO!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.