Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Funzione Logout

  1. #1
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313

    Funzione Logout

    Buongiorno a tutti,
    ho un piccolo problema con la funzione logout.
    Quando clicco sul bottone logout mi da pagina bianca oltre a non modificare il campo stato.
    Inoltre volevo trovare il modo che quando un utente chiude il browser oltre a distruggere in automatico la sessione modifichi il campo stato nella tabella login.
    Il codice della funzione è il seguente:
    Codice PHP:
    <?php
    include_once("config.php");
    session_start();
    header("Refresh: 5;URL=index.php");

    $query1 'SELECT * FROM login WHERE username = "'.$_SESSION['USER'].'" AND password = "'.$_SESSION['PASS'].'"';
    $result1 mysql_query($query1);
    while(
    $row mysql_fetch_assoc($result)){
    if(
    $row['stato'] = 'online'){
    $row['stato'] = 'offline';
    $query 'UPDATE login SET stato = "'.$row['stato'].'" WHERE username = "'.$_SESSION['USER'].'" AND password = "'.$_SESSION['PASS'].'"';
    $result mysql_query($query);
    }
    //fine if
    }//fine while
    if(isset($result)){
    session_destroy();
    }
    ?>
    attendo vostri utili consigli.
    grazie mille a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Non serve controllarlo con le query dato che se le sessioni sono settate vuol dire che l'user è loggato quindi esiste, ti basta semplicemente fare l'unset() delle sessioni senza distruggerle tutte

    Codice PHP:
    session_start(); 
    unset(
    $_SESSION['USER']);
    unset(
    $_SESSION['PASS']);
    header('Location: index.php'); 

  3. #3
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    non distrugge le sessioni, perchè se clicco su logout mi manda alla index.php ma non mi richiede le credenziali e passa direttamente alla home.php oltre a non cambiare il campo stato nella tabella login.
    ora il codice è il seguente:
    Codice PHP:
    <?php
    include_once("config.php");
    session_start();
    $stato 'offline';
    $query 'UPDATE login SET stato = "'.$stato.'" WHERE username = "'.$_SESSION['USER'].'" AND password = "'.$_SESSION['PASS'].'"';
    $result mysql_query($query);
    unset(
    $_SESSION['USER']);
    unset(
    $_SESSION['PASS']);

    header('Location: index.php');
    ?>

  4. #4
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    può essere perchè nell'index.php il parametro di controllo per effettuare il login è sulla variabile $_SERVER['PHP_AUTH_USER']?
    in tal caso come distruggo quella variabile?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da spawn88
    può essere perchè nell'index.php il parametro di controllo per effettuare il login è sulla variabile $_SERVER['PHP_AUTH_USER']?
    in tal caso come distruggo quella variabile?
    Il controllo del login è errato, devi controllare se esiste la sessione relativa all'utente

    quindi
    Codice PHP:
    if(!empty($_SESSION['USER'])) echo "L'user è loggato"
    In questo modo rimuovendo la sessione l'user sarà sloggato, e in futuro ti baserai su essa per manipolare le impostazione dell'utente

  6. #6
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    scusami ma non ci sono
    nella pagina index.php ho messo il controllo iniziale con :
    Codice PHP:
    <?php
    session_start
    ();
    if (empty(
    $_SESSION['USER']))
    {
    header('WWW-Authenticate: Basic realm="localhost"');
    header('HTTP/1.0 401 Unauthorized');
    echo 
    'AUTENTICAZIONE FALLITA';
    exit;
    }else{
    $user $_SERVER['PHP_AUTH_USER'];
    $pass $_SERVER['PHP_AUTH_PW'];
    ...
    }
    ?>
    e la pagina logout:
    Codice PHP:
    <?php
    include_once("config.php");
    session_start();
    if(!empty(
    $_SESSION['USER']){
    $stato ='offline';
    $query 'UPDATE login SET stato = "'.$stato.'" WHERE username = "'.$_SESSION['USER'].'" AND password = "'.$_SESSION['PASS'].'"';
    $result mysql_query($query);
    unset(
    $_SESSION['USER']);
    unset(
    $_SESSION['PASS']); 
    }
    header('Location: index.php');
    ?>
    quando clicco su logout mi da lo stesso errore di prima perchè non distrugge la sessione
    como puedo far?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da spawn88
    scusami ma non ci sono
    nella pagina index.php ho messo il controllo iniziale con :
    Codice PHP:
    <?php
    session_start
    ();
    if (empty(
    $_SESSION['USER']))
    {
    header('WWW-Authenticate: Basic realm="localhost"');
    header('HTTP/1.0 401 Unauthorized');
    echo 
    'AUTENTICAZIONE FALLITA';
    exit;
    }else{
    $user $_SERVER['PHP_AUTH_USER'];
    $pass $_SERVER['PHP_AUTH_PW'];
    ...
    }
    ?>
    e la pagina logout:
    Codice PHP:
    <?php
    include_once("config.php");
    session_start();
    if(!empty(
    $_SESSION['USER']){
    $stato ='offline';
    $query 'UPDATE login SET stato = "'.$stato.'" WHERE username = "'.$_SESSION['USER'].'" AND password = "'.$_SESSION['PASS'].'"';
    $result mysql_query($query);
    unset(
    $_SESSION['USER']);
    unset(
    $_SESSION['PASS']); 
    }
    header('Location: index.php');
    ?>
    quando clicco su logout mi da lo stesso errore di prima perchè non distrugge la sessione
    como puedo far?
    La sessione è settata? Stampando la sessione prima e dopo il logout quali sono i rispettivi risultati?

  8. #8
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    prima del logout mi stampa i valori delle sessioni.
    se li stampo dopo mi segnala che le sessioni non hanno alcun valore tramite una "Notice".

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da spawn88
    prima del logout mi stampa i valori delle sessioni.
    se li stampo dopo mi segnala che le sessioni non hanno alcun valore tramite una "Notice".
    E allora non esistono più quindi l'unset funziona correttamente perciò nelle altre pagine ti basta un controllo di questo tipo, come già scritto sopra


    Codice PHP:
    if(!empty($_SESSION['USER'])) echo "L'user è loggato"; else echo 'Non è loggato';

    //Oppure in modo diretto
    if(!isset($_SESSION['USER'])) echo "L'user è sloggato"

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 © 2024 vBulletin Solutions, Inc. All rights reserved.