• User Attivo

    problema script logout su sessioni php

    Ciao a tutti, scusate se posto una cosa lunga ma non riesco a risolvere; io avrei un problema di login e logout:
    Lo script di login e logout funzionano pero' mi succede una cosa strana:
    Quando entro la prima volta e poi faccio il logout, mi reindirizza sulla pagina di login e fin qui tutto ok perchè non ha piu' le sessioni. Pero' se rimango li e ci rientro per la seconda volta e poi rifaccio il logout, stavolta va su una pagina bianca e se torno indietro mi visualizza di nuovo le pagine private pur cliccando su link privati...solo chiudendo il browser fa finire la sessione. Cioè funziona tutto solo la prima volta... E' normale?
    Forse gli script comprendono cose che non servono...
    Gli script sono questi:

    1. "verify.php":

    [php]
    <?php
    //Avvio o continuo la sessione
    session_start();
    require_once('datediff.php');
    //Controllo che la sessione sia attiva
    if(!IsSet($_SESSION['logged'])){
    //Controllo se l' utente vuole loggarsi
    //Recupero i valori da una Form
    $username = @$_POST['txt_username'];
    $password = @$_POST['txt_password'];

    //Controllo se l' username e la password non sono vuoti 
    if((!strlen($username) == 0) and (!strlen($password) == 0)){ 
        //Effettuo il controllo dei dati 
        $strSQL = "SELECT * FROM tbl_users WHERE user_name = '".$username."'"; 
        $strSQL .= " AND user_pass = MD5('".$password."')"; 
        $result = mysql_query($strSQL);  
        $row = mysql_fetch_row($result);  
        //Controllo se l' utente e' stato trovato 
        if(!strlen($row[0]) == 0){ 
            /*Effettuo il Login: 
            * Array di sessione 
            * Contenente UserID e LastAccess 
            */ 
            $myArray = array($row[1], $row[3]); 
    
            /*
            Controllo che l' utente non sia già attivo 
            * Verifico che siano trascorsi almeno 1 secondo 
            * dall' ultima connessione 
            */ 
            if(fDateDiff($myArray[1], time(), 's') <= 1){ 
                $login_err = "La sessione per questo utente è "; 
                $login_err .= "già attiva sul sito...<br>"; 
                $login_err .= "Attendi 1 minuto e ripetere il Login"; 
            }else{ 
                //Effettuo il Login 
                $_SESSION['logged'] = $myArray; 
            } 
        }  
        //Libero la memoria 
        mysql_free_result($result); 
    } 
    

    }else{
    //Controllo se aggiornare l' ultima data di accesso
    if(fDateDiff($_SESSION['logged'][1], time(), 's') > 1){
    $strSQL = "UPDATE tbl_users SET user_lastaccess = ".time();
    $strSQL .= " WHERE user_id = ".$_SESSION['logged'][0];
    //Aggiorno la sessione
    $_SESSION['logged'][1] = time();
    mysql_query($strSQL);
    }
    }
    if(@$_GET['logout'] == 1){ //Effettuo il Logout

    /*
    $_SESSION = array(); //Desetto tutte le variabili di sessione
    session_destroy(); //Distruggo le sessioni
    */

    }
    ?>
    [/php]

    1. login.php:

    [php]
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>LOGIN</title>
    </head>
    <link rel=stylesheet href="style9.css" type="text/css">
    <body>
    <?php
    echo "ciao: ".@$_SESSION['logged'][0];
    ?>
    <form method="post" action="homepage.php">
    Username: <input type="text" name="txt_username">
    <p>
    Password: <input type="password" name="txt_password">
    <p>
    <input type="submit" value="login">
    </form>
    </body>
    </html>
    [/php]

    1. homepage.php:

    [php]
    <?php

    //Includo i file per la connessione
    //e per la verifica Utente
    require_once('db_conn.php');
    require_once('datediff.php');
    require_once('verify.php');

    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>area privata</title>
    </head>
    <link rel=stylesheet href="style3.css" type="text/css">
    <body>
    <?php
    //testare la sessione
    echo @$login_err;
    //Controllo che l' utente sia loggato
    if(IsSet($_SESSION['logged'])){
    echo "solo il webmaster puo' vedere questo"."<br>";
    echo "<p>Benvenuto utente: ".@$_SESSION['logged'][0];
    //echo "<br>Ultima Visita: ". date("d-m-Y H:i:s", @$_SESSION['logged'][1]);

    ?> 
    <br> 
    Pannello di controllo 
    <link rel=stylesheet href="style3.css" type="text/css"> 
    
    <p class="posizione1"> 
    
    <a href="iscrizioni.php">verifica iscrizioni</a><br> 
    <a href="invio_comunicazioni.php">invia comunicazioni</a><br> 
    <a href="homepage_prova.php">Esci</a> 
    </p> 
    <?php 
    

    }else

    echo "<p>Non sei autenticato !"."<br><a href='login.php'>login</a>"."<br>";
    ?>
    </body>
    </html>
    [/php]

    1. homepage_prova.php:

    [php]
    <?php
    require_once('verify.php');

    //AZZERAMENTO E RIGENERAZIONE
    session_start();
    $_SESSION = array();
    session_regenerate_id();
    header("Location: mio_sito/login.php");
    exit;
    ?>
    [/php]

    Non so come risolvere la cosa. La prima volta che entro funziona tutto e mi reindirizza sulla pagina di login cancellando le sessioni. Ma se ci rientro e poi faccio di nuovo il logout mi reindirizza in una pagina bianca e non mi cancella le sessioni.
    Grazie.