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.