Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,773

    classe che perde il valore!

    buongiorno ragazzi ho un problema , ho una classe per salvare la sessione nel database , che perde il valore quando chiamo la funzione logoutsession perche secondo voi? posto il codice :
    Codice PHP:
     class session
    {
        var 
    $sessionid "";
        var 
    $sessionmemberid ="";
        var 
    $useragent "";
        var 
    $ipaddress "";
        var 
    $dateline "";
        var 
    $islogged false;
        var 
    $sessiontype "";
        var 
    $SESS = array();
    function 
    session()
    {   
    $this->sessionid session_id();
    $this->ipaddress $_SERVER['REMOTE_ADDR'];
    $this->useragent trim(substr($_SERVER['HTTP_USER_AGENT'], 060)); 
    }
        
    function 
    SessionStart($sesstype)
    {    
    if(
    session_id()== "")
    session_start();
    global 
    $dbcore $smarty $RCW $cookie $log $settings;
    $this->sessionid session_id();
    $this->sessionmemberid $cookie->GetCookie('adminid');
    $this->ipaddress $_SERVER['REMOTE_ADDR'];
    $this->useragent trim(substr($_SERVER['HTTP_USER_AGENT'], 060)); 
    $this->sessiontype $sesstype 
    if(
    $this->sessiontype === SESSION_ADMIN){
       
    $sesstype $this->sessiontype;
    } else if(
    $this->sessiontype === SESSION_STAFF){
       
    $sesstype $this->sessiontype;
    } else if(
    $this->sessiontype === SESSION_USER){
      
    $sesstype $this->sessiontype;
    } else if(
    $this->sessiontype === SESSION_GUEST){
      
    $sesstype $this->sessiontype;
    }  else {
       return 
    false;
    }
    if(!empty(
    $this->sessionid)){
    $sessionid $this->sessionid ;
    }
    if(
    $sesstype == ''){
       return 
    false;
    }
    $countsess $dbcore->querycount("SELECT * FROM `sessions` WHERE sessionid = '".$dbcore->escape($sessionid)."'");
    if(
    $countsess >0)
    {
     echo 
    'sessione exists'.$countsess ;
    }else{
     echo 
    $countsess;
    /*  $this->writesession($this->sessionid, $sesstype); */
    }
    if(!
    $this->readsession($sessionid $sesstype)){
     
    $cookie->DeleteCookie("adminid" );
     
    $cookie->DeleteCookie("adminemail" );
     echo 
    "invalid sessionidxxxx ";
      
    /*  if (defined("SESSIONEXPIRY")){
           echo "[Session Expired Debug]: Unable to Read a valid session for session id: " . $sessionid;
        } */
    return false;
    }else{
    return 
    true;
    }
    /*  if (($this->sessiontype == SESSION_ADMIN ) && $RCW['user']['isadmin'] != "1")
    {
         $this->flushsession($this->sessionid , $sesstype);
         echo 'staff_not_admin';
          if(defined("SESSIONEXPIRY"))
          {
               echo "[Session Expired Debug]: User isnt admin and is trying to login to Admin CP.. bailing out..";
          }
    return false;
    }else{
    return true;
    }
     */ 
     
    if(($settings['sessioninactivity'] != )and($settings['sessioninactivity'] <  NEWTIME $this->SESS['lastactivity'])
                                              and(
    $SESS['lastactivity'] != 0)){
                                             
            
    $this->flushsession($this->SESS['sessionid'], $this->SESS['sessiontype']);      
     echo  
    'invalid sessionid ';
    /* if (defined("SESSIONEXPIRY")) 
    {
        echo "[Session Expired Debug]: Session expired due to inactivity, 
               Date difference between current system date (" . date("d M Y h:i:s A", NEWTIME) . ")
               and last activity (" . date("d M Y h:i:s A", $this->SESS['lastactivity']) .") 
               is " . (NEWTIME - $this->SESS['lastactivity']) . " 
               seconds whereas inactivity timing setting under Admin CP > Settings 
               is " . $settings['sessioninactivity'] . " seconds.";
    }
     */
    return false;
    }else{
    /* 
    if (180 < NEWTIME  - $RCW['user']['lastactivity']){
      $log->UpdateLastActivity($RCW['user']['userid']);
    }
     */ 
    return true;
    }
    }
    function 
    readsession($sessionid)
    {
      global 
    $dbcore $smarty $RCW $cookie $techaut $settings;
    $ris $dbcore->query("SELECT * FROM `sessions` WHERE sessionid = '".$dbcore->escape($sessionid)."'");
    $SESS $dbcore->fetch_array($ris);  
    if(!
    $SESS)
    {
    return 
    false;
    }
    $this->sessionid =  $SESS['sessionid'];
    $RCW['sessionid'] = $SESS['sessionid'];
    $this->lastactivity $SESS['lastactivity'];
    $this->islogged $SESS['isloggedin'];
    $this->dateline $SESS['date'];
    $this->typeid $SESS['typeid'];
    $this->SESS $SESS;
    $RCW['session'] =& $this->SESS;
    unset(
    $SESS); 
    $sessionidlist = array();
    $sessionidlist[] = $sessionid;
      return 
    true;
    }
    function 
    writesession($sessionid $sesstype ) {
       global 
    $dbcore $smarty $RCW $cookie $techaut $settings;
      if(
    $sesstype == SESSION_ADMIN){
           
    /* if(!empty($typeid)){
                     $dbcore->query("DELETE FROM `sessions` 
                                           WHERE `ipaddress` = '".$dbcore->escape($sessionid). "'
                                             AND `sessiontype` = '" . $dbcore->escape($sesstype) . "' 
                                             AND `typeid` = '".intval($typeid)."'");
                     $isloggedin =  1 ;
           }else{
                  return false; 
           } */
       
    }else if($sesstype == SESSION_STAFF ){
          
    /*  if(!empty($typeid)){
                     $time  = NEWTIME - $settings['sessioninactivity'];
                     $dbcore->query("DELETE FROM `sessions` 
                                           WHERE `sessiontype` = '".$dbcore->escape($sesstype). "'
                                             AND `lastactivity` = < '" . $dbcore->escape($time) . "'");
                                             
                     $isloggedin =  1 ;
           }else{
                    return false;  
           } */
       
    }else if($sesstype == SESSION_USER){
                  
    $isloggedin 1;
       } else if(!
    $sesstype == SESSION_GUEST){
                 
    $isloggedin 0;
       }else{
                  return 
    false;
       }  
     
     
    $res $dbcore->query("REPLACE INTO `sessions` 
    (`sessionid`, `ipaddress`, `lastactivity`, `useragent`, `isloggedin`, `sessiontype`, `typeid`, `date`, `status`) VALUES(
    '"
    .$dbcore->escape($sessionid)."',
    '"
    .$dbcore->escape($this->ipaddress)."',
    '"
    NEWTIME."',
    '"
    $dbcore->escape(substr($this->useragent0,60))."',
    '" 
    intval($isloggedin) . "', 
    '"
    $dbcore->escape($this->sessiontype) ."',
    '"
    .$dbcore->escape($this->typeid)."', 
    '"
    time() ."', 0)") or die(mysql_error());
      if(!
    $res)
     {
          echo 
    'la sessione non e stata salvata '
      } else {
          echo 
    'this session added '.$sessionid;
      }
     }
        function 
    logoutsession($sesstype )
        {
            global 
    $dbcore;
            global 
    $SESS;
            global 
    $cookie;
            
             if (
    trim($this->sessionid) != "")  { 
                echo 
    'this session NOT empty ' $this->sessionid;
                
    /*  $this->flushsession($this->sessionid, $sesstype); */
                
    return true;
             }else{
                 echo 
    'this session IS empty ' $this->sessionid;
                return 
    false
              }

            
    /*  echo 'this session not canelled ' ; */
        
    }
        function 
    flushsession($sessionid$sesstype)
        {
            global 
    $dbcore;
            global 
    $RCW;
            global 
    $cookie;
            
    if (empty(
    $sessionid)) {
                return 
    false;

    $result =    $dbcore->query("DELETE FROM `sessions` WHERE `sessionid` = '" $dbcore->escape($sessionid) . "';");
    if(!
    $result)

          echo 
    'this session not canelled '.$sessionid;

    }else {
    session_start();
    session_unset();
    session_destroy();
    $cookie->DeleteCookie('adminautenticate');
    $cookie->DeleteCookie('adminid');
    $cookie->DeleteCookie('adminemail');
     echo 
    'this session  canelled '.$sessionid;
       }

        }

    premetto che se l id di sessione non e presente nel database lo inserisce , però quando richiamo la funzione logoutsession arriva la variabile idsession vuota perche ? grazie
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,773
    secondo voi e giusto cosi funziona logoutsession :
    Codice PHP:
        function logoutsession($sesstype)
        {
            global 
    $dbcore;
            global 
    $SESS;
            global 
    $cookie;
            if(
    session_id()== "")
               
    session_start();
               
    $_SESSION['sessionid'] = session_id() ;
    if(!isset(
    $_SESSION['sessionid'])){$this->sessionid ="";}else{$this->sessionid trim($_SESSION['sessionid']);}
            
             if (
    trim($this->sessionid) != "")  { 
                echo 
    'this session NOT empty ' .$this->sessionid;
                
    /*  $this->flushsession($this->sessionid, $sesstype); */
                
    return true;
             }else{
                 echo 
    'this session IS empty ' $this->sessionid;
                return 
    false
              }
            
    /*  echo 'this session not canelled ' ; */
        

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

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.