È possibile che php esegua istruzioni nonostante una condizione?

di il
2 risposte

È possibile che php esegua istruzioni nonostante una condizione?

Ciao a tutti
Io ho questo all'inizio di una pagina php
require_once($_SERVER["DOCUMENT_ROOT"]."/start/start.php");
if($_SESSION['level'] > 3)
	{
		header('Location: $_SERVER["DOCUMENT_ROOT"]."/index.php"');
	}
In seguito ci sono una serie di istruzioni.
Premetto che funziona, ma ho avuto modo di riscontrare che in assenza di un SESSION il programma ha continuato a eseguire le istruzioni successive.
In realtà l'ho messo in modo tale che se un Livello > 3 dovesse entrare nella pagina, lo riporterebbe all'homepage.
Allo stesso tempo implicitamente credevo di fare un controllo anche sull'esistenza di un $_SESSION...
perché $_SESSION['level'] viene impostato solamente se si effettua il login...

Forse ho sbagliato qualcosa...
Ero entrato in questa pagina in precedenza e lasciata aperta (ci sono entrato essendo un Livello 0, quindi ho saltato l'if)
Ho lasciato poi la pagina aperta, e col passare del tempo ho perso il login per inattività.
Come sono tornato ho fatto subito F5, mi ha riportato all'homepage... ma allo stesso tempo ha effettuato anche tutte le istruzioni successive all'if. (Lo so perché le istruzioni successive sono degli UPDATE sul db, e ho visto che li ha eseguiti)
Di norma quella pagina ci mette diversi secondi a terminare tutte le istruzioni, e ci ha impiegato diversi secondi prima di reindirizzarmi. (motivo per il quale mi ha messo un dubbio e sono andato sul database a guardare)
Eppure mi avrebbe dovuto reindirizzare subito, essendo l'if tra le prima istruzioni.

Come mai?
è possibile che if($_SESSION['level'] > 3) controlli solamente se il livello è maggiore di 3 ma non se $_SESSION['level'] esista?
o forse header('Location non funziona, come credevo, come una sorta di exit(); ?
sarebbe il caso di metterlo un exit(); dopo header(location? per essere sicuri che non esegua tutto il resto?

Grazie

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte