Buongiorno a tutti,
ancora una volta mi ritrovo a dover parlare di sessioni. Stavolta però si settano correttamente (a parte qualche eccezione ogni tanto) .
La questione ruota attorno alla funzione session_destroy().
Immaginate una pagina di log-in con il tipico: "Se i dati sono corretti, creo la variabile di sessione e ti reindirizzo alla pagina x", così:
Pagina login.php, proveniente da index.php
Codice PHP:
<?php
session_start();
if ($_POST) {
if (($_POST['user'] == 'pippo') && ($_POST['password'] == 'pluto')) {
$_SESSION['auth'] = 'autenticato';
header('Location:pagina-riservata.php');
exit();
} else {
header('Location:index.php');
exit();
}
} else {
header('Location:index.php');
exit();
}
?>
Ora, nella pagina riservata, avrò (all'inizio) l'inizializzazione e la verifica della presenza della variabile di sessione creata in autenticazione: se ok -> allora resta; se non ok -> allora index.php e fai il login di nuovo.
La questione è questa:
Se alla fine di ogni file di tipo "pagina riservata" includo session_destroy()..E..dopo aver eseguito il login correttamente..E..aver creato la variabile di sessione correttamente..(E..aver controllato che c'è nella pagina riservata..)
..al refresh di pagina, con session_destroy() incluso, la variabile viene cancellata...e ritorno all'area di login.
Ora, la domanda è:
Il comportamento è corretto? Mi verrebbe da pensare di si dato che session_destroy() destroys all of the data associated with the current session. .
Oppure è un'anomalia?
Sopratutto...session_destroy() non serviva ad eliminare la sessione SOLO quando la finestra del browser viene chiusa? ..perchè così, al refresh questa se ne va via..
Grazie a tutti.
EDIT: avevo dimenticato "session_start()" qui all'inizio dello script...c'è nelle mie pagine...l'ho dimenticato solo ora qui.