Strano comportamento sessioni

  • Creatore Discussione Creatore Discussione Vicar
  • Data di inizio Data di inizio

Vicar

Utente Attivo
15 Gen 2010
48
0
0
Salve ragazzi, oggi ho notato uno strano comportamento delle sessioni, di seguito vi espongo il problema.

dopo aver effettuato il login do un valore alla sessione $_SESSION['login'] e faccio un header in un'altra pagina.

In quella pagina controllo che il valore della sessione ci sia altrimenti lo rimando al login. Questa pagina funziona in modo corretto, entra e il valore della sessione è corretto. Appena cambio pagina il valore della sessione scompare, come mai?
 
Se effettua correttamente il login setta la sessione:

Codice:
$_SESSION['login_done'] = '1';

e nello stesso login inizialmente controlla che sia stato già fatto il login.

Codice:
if(isset($_SESSION['login_done'])){
	header("Location: dashboard.php");
	exit;
};

nella seconda pagina funziona, ma quando agggiorno è come se la sessione scompare e c'è questo controllo.

Codice:
if(!isset($_SESSION['login_done']) || (isset($_SESSION['login_done']) && $_SESSION['login_done']!= KEY)){
	unset($_SESSION['login_done']);
	unset($_SESSION['username_logged']);
	
	header("Location: login.php");
	exit;
}

Cosa c'è di sbagliato?
 
Onestamente non capisco a cosa serva tutto quel controllo. Fai semplicemente:
PHP:
if (!isset($_SESSION['login_done'])) {
    // utente non loggato

    header('Location: login.php');
    exit();
}
Ovviamente all'inizio di ogni script chiami session_start per inizializzare la sessione, vero?
 
Sisi lo scrivo session_start, aldilà del controllo strano, altri suggerimenti per risolvere questo problema?
 
Perché dici "al di là del controllo strano"? Io penso che il problema sia proprio quello. Il tuo if significa: se la sessione non è impostata, oppure è impostata e il valore è diverso dalla costante KEY. Cosa contiene questa costante? Dovrebbe essere 1. Ma se la sessione può contenere 1 oppure niente non vedo a che serva tutto quel controllo.
 
Ma perchè 1 volta non funziona e le altre 100 si?

Solamente se io apro il broswer la prima volta mi fa questo capriccio, le altre volte funziona correttamente.
 

Discussioni simili