zisslaweng.de

 Home    CSS    PHP    HTML    JavaScript    Allgemein    Sitemap   exemption-filter
In der Datei z_sess_storageclass.php5

eine neue Klasse...

class Session_Storage_DbMapper extends BaseDbMapper {
  public function __construct () {
    parent::__construct();
    session_set_save_handler (array (&$this,'z_open'),
                              array (&$this,'z_close'),
                              array (&$this,'z_read'),
                              array (&$this,'z_write'),
                              array (&$this,'z_destroy'),
                              array (&$this,'z_gc'));
    return true;
  }
  public function z_open ($sesspath, $sessname){
    return true;
  }
  public function z_close (){
    return true;
  }
  public function z_read ($sessid){
    $sql  = "
    SELECT 
      var_php
    FROM
      z_session
    WHERE
      sessionid = '$sessid'
    ";
  $result = $this->base_query($sql);
    if ($ret = $result->fetch_assoc()) {
    $sql  = "
    UPDATE 
      z_session 
    SET 
      access_end = ".time()."
    WHERE 
      sessionid = '$sessid'
    ";
    $this->base_query($sql);
      return $ret['var_php'];
    } else {
      return "";
    }
  }

  public function z_write ($sessid, $var) {
    $sql = "
    INSERT INTO
      z_session
      (sessionid, var_php, access, variables)
    VALUES
      ('$sessid','$var',".time(). ", '".serialize($_SERVER)."')
    ON DUPLICATE KEY
    UPDATE
      var_php = '$var',
      access_end = ".time()."
    ";
    $this->base_query($sql);
    return true;
  }

  public function z_destroy ($sessid){
    $sql  = "
    SELECT
      *
    FROM
      z_session 
    WHERE 
      sessionid = '$sessid'
    ";
    $result = $this->base_query($sql);
    if ($row = $result->fetch_assoc()) {
      if ($row['access_end'] != '') {
        $hit = new HitDbMapper();
        $hit->insert_Hit('tag_'.date("z",$row['access']), 
                 'counter_gesamt',date("Y",$row['access']));
      }
    $sql  = " 
    UPDATE 
      z_session 
    SET 
      sessionid = NULL 
    WHERE 
      sessionid = '$sessid'
    ";
    $this->base_query($sql);
    }
  return true;
  }

  public function z_gc ($sesslt){
    $sql  = "
    LOCK TABLES z_session write
    ";
    $this->base_query($sql);
    $hit = new HitDbMapper();
    $sql  = "
    SELECT 
      ord, 
      access 
    FROM 
      z_session 
    WHERE 
      !isnull(sessionid) &&
      !isnull(access_end) && 
      access_end < ". (time()-600)
    ;

    if ($result = $this->base_real_query($sql)){
      if ($res_store = $this->store_result()){ 
        while ($row = $res_store->fetch_assoc()) {
          $sql  = " 
          UPDATE 
            z_session 
          SET 
            sessionid = NULL 
          WHERE 
            ord = ".$row['ord']
          ;	
          $this->base_query($sql);
          $hit->insert_Hit('tag_'.date("z",$row['access']), 
                'counter_gesamt', date("Y",$row['access']));
        }
      $res_store->free_result();
      } 
    }

    $sql  = " 
    DELETE FROM 
      z_session 
    WHERE 
      (isnull(access_end) && access < ".(time()-600).") ||
      access < ".(time()-2592000)
    ;
    $this->base_query($sql); 
    $sql  = "
    UNLOCK TABLES
    ";
    $this->base_query($sql);
    return true;
  }
}
Logo