• User

    Meccanismo di logout da un'area ristretta

    Ciao a tutti, descrivo la questione. Devo implementare un meccanismo di
    logout dall'area ristretta di un sito con php e avrei pensato ad un
    sistema decisamente standard: se il login dell'utente va a buon fine, viene
    settata la variabile di sessione $_SESSION["user"]; ogni pagina dell'area
    ristretta controlla se $_SESSION["user"] esiste: se si, la pagina mostra
    il proprio contenuto altrimenti ridirect al login. Tutte le pagine della
    sezione ristretta presentano un link alla pagina logout.php che distrugge
    la variabile $_SESSION["user"] ed esgue una redirect a index.php.
    La struttura delle pagine dell'area ristretta è:

    [PHP]
    <?php

    if( !isset($_SESSION["user"] || $_SESSION["user"]!="logged" )
    {
    header('location:login.php');
    exit();
    }

    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Stric......-strict.dtd">

    <html>

    ...html della pagina...

    <a href="logout.php">logout</a>

    .....

    </html>
    [/PHP]

    La pagina logout.php contiene solo le istruzioni php:

    [PHP]
    <?php
    session_start();

    unset($_SESSION["user"]);

    header('location:index.php');
    ?>
    [/PHP]

    La domanda è: la pagina logout.php va bene anche così o deve
    necessariamente distruggere la sessione con session_destroy? 1000 grazie


  • User Attivo

    Ciao,
    può andare bene anche così, ma dipende da quali altre variabili di sessione utilizzi e come.
    Mi spiego.
    Se in fase di login e durante il periodo in cui l'utente è loggato memorizzi ad esempio anche altri dati come il nome o lo username che successivamente al logout non dovrebbero essere più disponibili, dovresti distruggere anche quelli.
    Con
    [PHP]
    session_unset();
    session_destroy();
    [/PHP]
    sei sicuro di cancellare tutto, ma se oltre alle variabili di sessione relative all'utente ne hai altre che utilizzi per scopi differenti e di cui hai necessità allora devi distruggere una ad una solo quelle legate all'account loggato, come nel codice che hai riportato.

    Alessandro