Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [PHP & MySQL] Problema con logout e sessione

    Ciao a tutti,


    sto creando un area riservata per il momento é in fase di costruzione e di test.
    Ho un porblema che non riesco a risolvere, praticamente mi loggo come Admin e qui tutto bene poi sul secondo pc che ho mi loggo come michel e fin qui anche tutto bene, ora al momento del logout dell'utente admin, mi va a impostare la sessione a 0 cioé non loggato, pero mi sono accorto che se l'utente michel effettua anche lui il logout non funziona correttamente perche al logout di admin mi ha messo la sessione a 0 (non loggato).

    Spero di essermi spiegato se no ci riprovo.

    Il mio codice é questo:

    Codice PHP:
    // Avvio la sessione

    session_start();

    // Funzione controlla username and password

    function checkLogin($user$pass) {
        
    $sid session_id();
        
    $_SESSION['auth'] = 0;
        include
    "config.inc.php";
    mysql_select_db($database_name$conn) or die ("Errore nel selezionare il database: " mysql_error());
        
    $sql "SELECT * FROM tb_login WHERE lg_usr = '$user' AND lg_pwd = '$pass'" ;
        
    $query mysql_query($sql) or die ("Errore nella query" mysql_error());
        
    $result mysql_fetch_assoc($query);
        
    $usr $result['lg_id'];
        
    $uname $result['lg_usr'];
                
        if(
    mysql_num_rows($query) > 
        {
            
    header("Location: admin.php?action=LoginOk" "&usr=" $usr "&sid=" $sid );
            
    mysql_select_db($database_name$conn) or die ("Errore nel selezionare il database: " mysql_error());
            
    $sql "UPDATE tb_login SET lg_session = '$sid', lg_useronline = '1', lg_first = NOW() WHERE tb_login.lg_id = '$usr'";
            
    $query mysql_query($sql);
            
    $_SESSION['username'] = $uname;
            
    $_SESSION['auth'] = 1;
            exit();
        } else {
            
    header("Location: login.php?action=LoginFail");
            exit();
        }
        }
        
    // Funzione verivica se si é loggati

    function verifyAuth() {
    if(isset(
    $_SESSION['auth']) && $_SESSION['auth'] == 1){
        } else {
        
    header("Location: login.php?action=LoginFail");
        exit();
        }
        }

    // Funzione per il logout

    function logOut() {
        
    header("Refresh:15; URL=login.php?action=LogOut");
        include
    "config.inc.php";
        
    $usrid $_GET['usr'];
        
    mysql_select_db($database_name$conn) or die ("Errore nel selezionare il database: " mysql_error());
        
    $sql "UPDATE tb_login SET lg_session = '', lg_useronline = '0', lg_last = NOW() WHERE tb_login.lg_id = '$usrid'";
        
    $query mysql_query($sql);
        
    session_unset();
        
    session_destroy();
        echo 
    "<html>";
        echo 
    "<head>";
        echo 
    "<link href='stylecss.css' rel='stylesheet' type='text/css'>";
        echo 
    "<body>";
        echo 
    "







    "
    ;
        echo 
    "<table width='600' align='center' border='1' cellpadding='0' cellspacing='0' >";
        echo 
    "<tr>";
        echo 
    "<td bgcolor='#CCCCCC'>";
        echo 
    "
    "
    ;
        echo 
    "<div align='center' class='TestoLogOut'>";
        echo 
    "Logout in corso, tra qualche secondo sarai reindirizzato alla pagina di login.</br>";
        echo 
    "Se il tuo browser non supporta il reindirizzamento automatico clicca ";
        echo 
    "[url='login.php?action=LogOut']qui[/url]";
        echo 
    "</div>";
        echo 
    "
    "
    ;
        echo 
    "</td>";
        echo 
    "</tr>";
        echo 
    "</table>";
        echo 
    "</body>";
        echo 
    "</head>";
        echo 
    "</html>";
        exit();
        } 
    Il problema credo che sia nella funzione di logout quando eseguo il session_unset e session_destroy, come posso risolvere?


    EDIT:
    se volete vedere ho messo online il tutto qui , provate ad entrare con tutti e due gli utenti e poi a fare un login di uno e nellatra pagina fate un rafresh, sparira la sessione impostata a 1, giusto per farvi vedere cosa intendo.

    1 utente
    Username : test
    password : test

    2 utente
    username : mich
    password : mich70

    Grazie Michel
    PHP THE BEST

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    202
    Ciao, mi pare che tu abbia risolto?

    intanto il refresh mettilo a 5 secondi 15 sn tanti e poi ti consiglierei anche di controllare se l'utente è già loggato

  3. #3
    Utente bannato L'avatar di Skyline89
    Registrato dal
    Jun 2006
    Messaggi
    225
    un condiglio per gli echo, puoi aprire un echo all'inizio e chiuderlo alla fine senza metterne venti come hai fatto ciau

  4. #4
    a quanto pare adesso funziona ma non so il perché da quando ho ostato ieri sera non ho fatto cambiamenti, da notare che o scritto sbagliato ieri, al posto di testare sul secondo pc provavo ad entrare sempre dal mio con 2 username differenti e mi dava quel problema, ora ho riprovato sempre sul mio e funziona !!!

    Grazie lo stesso

    Michel
    PHP THE BEST

  5. #5
    Alla fine testando un po mi sono accorto che non va come vorrei, se per esempio come detto nei post sopra entro con due login differenti e poi faccio il logout del primo funziona, ma se poi prima di fare un logout del secondo login faccio un refresh mi ha cancellato la sessione e quindi di conseguenza non funziona correttamente!!

    Sapete darmi una mano, non sono esperto ma sto imparando!!

    Grazie Michel
    PHP THE BEST

  6. #6
    Utente bannato L'avatar di Skyline89
    Registrato dal
    Jun 2006
    Messaggi
    225
    ma nn puoi fare 2 login xchè quando fai session_destroy(); le distruggi tutte

  7. #7
    si quello lo capito mi sono accorto che é per quello ma non saprei come fare a risolvere? Sapresti consigliarmi un metodo?

    Grazie Michel
    PHP THE BEST

  8. #8
    Utente bannato L'avatar di Skyline89
    Registrato dal
    Jun 2006
    Messaggi
    225
    ma a cosa ti serve loggarti due volte con nik diversi?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    202
    Se usi lo stesso browser certo che ti cancella la sessione, xkè la sessione è la stessa.
    Prova a loggarti uno con IE e uno con firefox.
    Se usi 2 tab nello stesso browser noterai che il sid è identico in entrambi

  10. #10
    Dopo vari test e prove sono arrivato pure io a questa conclusione!!

    Grazie a tutti per le info,

    Saluti Michel
    PHP THE BEST

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.