Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,804

    login che salva le sessioni nel db ma non l elimina

    salve ragazzi volevo chiedervi un aiuto ho fatto un login con sessioni, e ho provato ad iserire una classe che salva le sessioni nel db, adesso succede che , la sessione la salva nel db, pero quando effettuo il logut non distrugge la sessione ,secondo voi cosa devo fare? questo e il logind
    Codice PHP:
    if($_POST['xxx']=="verific"){


    if(!isset(
    $_POST['login'])){$login="";}else{$login trim($_POST['login']);}
    if(!isset(
    $_POST['pass'])){$pass="";}else{$pass trim($_POST['pass']);}
    if(!isset(
    $login)or $login ==''){
    echo
    "inserire illogin";
    return;
    }if(!isset(
    $pass) or $pass==''){
    echo
    "inserirela password";
    }
    else
    {
    $login trim(addslashes($_POST['login']));
    $pass trim(addslashes($_POST['pass']));
    echo  
    $pass."non criptata
    "
    ;
    $pass md5($pass);
    echo  
    $pass." criptata
    "
    ;
    $DB = new DB();
    $DB->connect();
    $controllo_dati_utente mysql_query("select * from utenti where user = '$login' and pass = '$pass' and stato = 1 ");
    if(@
    mysql_num_rows($controllo_dati_utente) !=1){
    echo
    "nome non trovato";
    }else{
    $_SESSION['login']="$login";
    echo
    "loggin effettuato con successo".$_SESSION['login'];
    echo
    "
    "
    ;
    echo 
    session_id();

    }
    }


    questa e la classe per salvare le sessioni nel db
    Codice PHP:
    class session {
        
    // session-lifetime
        
    var $lifeTime;
        
    // mysql-handle
        
    var $dbHandle;
        function 
    open($savePath$sessName) {
           
    // get session-lifetime
           
    $this->lifeTime get_cfg_var("session.gc_maxlifetime");
           
    // open database-connection
           
    $dbHandle = @mysql_connect("localhost","root","maurizio");
           
    $dbSel = @mysql_select_db("test",$dbHandle);
           
    // return success
           
    if(!$dbHandle || !$dbSel)
               return 
    false;
           
    $this->dbHandle $dbHandle;
           return 
    true;
        }
        function 
    close() {
            
    $this->gc(ini_get('session.gc_maxlifetime'));
            
    // close database-connection
            
    return @mysql_close($this->dbHandle);
        }
        function 
    read($sessID) {
            
    // fetch session-data
            
    $res mysql_query("SELECT session_data AS d FROM ws_sessions
                                WHERE session_id = '
    $sessID'
                                AND session_expires > "
    .time(),$this->dbHandle);
            
    // return data or an empty string at failure
            
    if($row mysql_fetch_assoc($res))
                return 
    $row['d'];
            return 
    "";
        }
        function 
    write($sessID,$sessData) {
            
    // new session-expire-time
            
    $newExp time() + $this->lifeTime;
            
    // is a session with this id in the database?
            
    $res mysql_query("SELECT * FROM ws_sessions
                                WHERE session_id = '
    $sessID'",$this->dbHandle);
            
    // if yes,
            
    if(mysql_num_rows($res)) {
                
    // ...update session-data
                
    mysql_query("UPDATE ws_sessions
                             SET session_expires = '
    $newExp',
                             session_data = '
    $sessData'
                             WHERE session_id = '
    $sessID'",$this->dbHandle);
                
    // if something happened, return true
                
    if(mysql_affected_rows($this->dbHandle))
                    return 
    true;
            }
            
    // if no session-data was found,
            
    else {
                
    // create a new row
                
    mysql_query("INSERT INTO ws_sessions (
                             session_id,
                             session_expires,
                             session_data)
                             VALUES(
                             '
    $sessID',
                             '
    $newExp',
                             '
    $sessData')",$this->dbHandle);
                
    // if row was created, return true
                
    if(mysql_affected_rows($this->dbHandle))
                    return 
    true;
            }
            
    // an unknown error occured
            
    return false;
        }
        function 
    destroy($sessID) {
            
    // delete session-data
            
    mysql_query("DELETE FROM ws_sessions WHERE session_id = '$sessID'",$this->dbHandle);
            
    // if session was deleted, return true,
            
    if(mysql_affected_rows($this->dbHandle))
                return 
    true;
            
    // ...else return false
            
    return false;
        }
        function 
    gc($sessMaxLifeTime) {
            
    // delete old sessions
            
    mysql_query("DELETE FROM ws_sessions WHERE session_expires < ".time(),$this->dbHandle);
            
    // return affected rows
            
    return mysql_affected_rows($this->dbHandle);
        }
    }
    $session = new session();
    session_set_save_handler(array(&$session,"open"),
                             array(&
    $session,"close"),
                             array(&
    $session,"read"),
                             array(&
    $session,"write"),
                             array(&
    $session,"destroy"),
                             array(&
    $session,"gc")); 
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  2. #2
    quando effettuo il logut non distrugge la sessione
    Che cosa intendi per "non distrugge la sessione"?
    L'utente rimane "loggato"?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,804
    ciao filippo rimane loggiato e rimanre lA SESSIONE NEL DB anche se faccio il logout
    Codice PHP:
    session_start();
    $_SESSION['login'];
    if(isset(
    $_SESSION['login'])){
    echo
    " hai i permessi per visualizare la pagina";
    }
    else{
    echo
    " non hai i permessi per visualizare la pagina";

    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  4. #4
    Che codice utilizzi per fare il logout?
    Utilizzi header location?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,804
    si uso header location


    Codice PHP:
    session_start();
    $_SESSION = array(); 
    session_destroy();
    header("Location: login.php"); 
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  6. #6
    Modifica il tuo codice:
    Codice PHP:
    session_start();
    $_SESSION = array();
    session_destroy();
    session_write_close();
    header("Location: login.php?" session_name() . '=' session_id()); 
    Per conformita' all'RFC, l'url utilizzato con l'header Location dovrebbe essere assoluto (completo di protocollo, host etc).

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,804
    session name va cosi come e o session_name($_session['nnomesessione']);
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  8. #8
    Prova il codice suggerito cosi' come è stato scritto.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,804
    lo provato mi da questo sulbrowser nella barra degli indirizzi http://localhost/login/login.php?PHPSESSID=
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  10. #10
    Codice PHP:
    session_start();
    $_SESSION = array();
    $id session_id();
    session_destroy();
    session_write_close();
    header("Location: login.php?" session_name() . '=' $id); 

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.