За последние 24 часа нас посетили 17909 программистов и 1638 роботов. Сейчас ищет 2071 программист ...

работа с сессией

Тема в разделе "Прочие вопросы по PHP", создана пользователем Alex_@, 20 май 2013.

  1. Alex_@

    Alex_@ Активный пользователь

    С нами с:
    1 окт 2009
    Сообщения:
    76
    Симпатии:
    0
    здравствуйте у меня есть класс для работы с сессией

    Код (Text):
    1. <?php
    2. session_set_save_handler("ks_session::open", "ks_session::close", "ks_session::read", "ks_session::write", "ks_session::destroy", "ks_session::gc");
    3.  
    4. class ks_session{
    5.    
    6.     private static $_obj = null;
    7.     private $_config;    
    8.     private static $_key = null;
    9.     private static $_sessionName = null;
    10.    
    11.     private function __construct(){
    12.         $this->_config = new ks_config(TYPE_CONF_BASE,array('data' => __CLASS__));
    13.       }
    14.    
    15.     public static function init(){
    16.         if(self::$_obj === null) self::$_obj = new ks_session();
    17.         return self::$_obj;
    18.      }
    19.    
    20.     public static function load_config(){
    21.         self::$_sessionName = self::init()->_config->getData('name_session');
    22.         self::$_key = self::init()->_config->getData('key_session');
    23.         session_name(self::$_sessionName);
    24.     }
    25.    
    26.     public static function get_key(){
    27.         return self::$_key;
    28.     }
    29.    
    30.     public static function get_session_id($sid){
    31.         return sha1(self::$_key . $sid);
    32.     }
    33.    
    34.     public static function get_session_name(){
    35.         return self::$_sessionName;
    36.     }    
    37.    
    38.     public static function open(){
    39.         return true;
    40.     }
    41.    
    42.     public static function close(){
    43.         return true;        
    44.     }
    45.    
    46.     public static function read($sid){
    47.         ks_user::init();
    48.         $query = ks_select::init(array('session','user'))
    49.                  ->add_condition_val('s_id',self::get_session_id($sid))
    50.                  ->add_condition_filed('s_uid','u_id')
    51.                  ->doAnd()
    52.                  ->getOne();
    53.         if ($query !== false){
    54.             if((integer)$query->u_id === USER_UNONIM){
    55.                 $update = ks_update::init('session')
    56.                           ->add_valueUpdate('s_time_enter',time())
    57.                           ->add_condition('s_id',self::get_session_id($sid))
    58.                           ->performQuery();
    59.             }
    60.             else{
    61.                 $update = ks_update::init('user')
    62.                           ->add_valueUpdate('u_time_enter',time())
    63.                           ->add_condition('u_id',$query->u_id)
    64.                           ->performQuery();
    65.             }
    66.         }              
    67.         ks_user::init()->load_user($query);
    68.         return $sid;
    69.     }
    70.    
    71.     public static function write($sid, $value){
    72.         $add = array(USER_UNONIM,self::get_session_id($sid),$_SERVER['REMOTE_ADDR'],time(),time());
    73.         $query = ks_insert::init('session')
    74.                  ->add_value($add)
    75.                  ->performQuery();
    76.     }
    77.    
    78.     public static function destroy($sid){}
    79.     public static function gc(){}
    80. }
    81. ?>
    данные о сеансе хранятся в таблице session.
    На ноутбуке у меня стоит windows XP работает всё замечательно,
    когда пересаживаюсь за "стационарник", на котором стоит windows 7 у меня в таблице session вместо одной записи появляется две и при обновлении страницы записи также добавляются причём по 2 штуке.
    можете помочь, я просто не могу понять в чём проблема.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    о_О хз. надо дебагать.
     
  3. Alex_@

    Alex_@ Активный пользователь

    С нами с:
    1 окт 2009
    Сообщения:
    76
    Симпатии:
    0
    не понял что надо делать?
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    отлаживать. алгоритм должен работать так как его выдумал создатель. дебаг сверяет состояния на этапах программы с соответствующими состояниями в голове программиста.