wssx 发表于 2011-4-22 16:58:59

設置session的過期時間

本帖最后由 wssx 于 2011-4-22 17:37 编辑

項目登陸后會保存資料到session中,現在config中的$config['sess_expiration']                = 60;已經這樣設置了,也就是1分鐘后session就會過期,但是過了10分鐘,發現session還在,還是可以進行登陸后才能進行的操作。<?php
// system/application/models/admin_current_user.php
class Admin_current_user {
        private static $admin_user;
        private function __construct() {}
        public static function admin_user() {
                if(!isset(self::$admin_user)) {
                        $CI =& get_instance();
                        $CI->load->library('phpsession');
                        if (!$admin_user_id = $CI->phpsession->get('admin_user_id','adminlogin')) {
                                return FALSE;
                        }
                        if (!$u = Doctrine::getTable('admin')->find($admin_user_id)) {
                                return FALSE;
                        }
                        self::$admin_user = $u;//user对象保存到静态变量$user
                }
                return self::$admin_user;
        }
        public static function login($username, $password) {
                // 得到 User object 从 username
                if ($u = Doctrine::getTable('admin')->findOneByUsername($username)) {
                        // 这个变异 (加密) 输入的password
                        $u_input = new Admin();
                        $u_input->password = $password;

                        // password匹配(加密过的密码)
                        if ($u->password == $u_input->password) {
                                unset($u_input);

                                $CI =& get_instance();
                                $CI->load->library('phpsession');
                                $CI->phpsession->save('admin_user_id',$u->id,'adminlogin');
                                self::$admin_user = $u;
                                return TRUE;
                        }
                        unset($u_input);
                }
                // 登录失败
                return FALSE;
        }

        public function __clone() {
                trigger_error('Clone is not allowed.', E_USER_ERROR);
        }
}

這裡的代碼是判斷是否登陸用的

jeongee 发表于 2011-4-22 17:02:53

那个配置是给ci自带session用的,你用的是什么session???

wssx 发表于 2011-4-22 17:06:08

$CI =& get_instance();
                        $CI->load->library('phpsession');
                        if (!$admin_user_id = $CI->phpsession->get('admin_user_id','adminlogin')) {
                              return FALSE;
                        }這段代碼不是說用的是ci的session嗎

jeongee 发表于 2011-4-22 17:07:56

回复 3# wssx


   不是吧?你的phpsession是继承ci_session写的吗?

wssx 发表于 2011-4-22 17:14:49


<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class PhpSession {

    function PhpSession() {
      session_start();
    }
   
    function save($var, $val, $namespace = 'default') {
      $_SESSION[$namespace][$var] = $val;
    }
   
    function get($var = null, $namespace = 'default') {
      if(isset($var))
            return isset($_SESSION[$namespace][$var]) ? $_SESSION[$namespace][$var] : null;
      else
            return isset($_SESSION[$namespace]) ? $_SESSION[$namespace] : null;
    }
   
    function clear($var = null, $namespace = 'default') {
      if(isset($var))
            unset($_SESSION[$namespace][$var]);
      else
            unset($_SESSION[$namespace]);
    }
   
    function destroy($namespace){
            if(isset($_SESSION[$namespace])){
                    unset($_SESSION[$namespace]);
            }
    }
}
貌似悲劇了。框架是公司水平好些的搭建的,現在有要求要設置session的過期時間

kylidboy 发表于 2011-4-22 17:56:26

么事,
<?php
$lifetime=600;
session_set_cookie_params($lifetime);
session_start();
?>
页: [1]
查看完整版本: 設置session的過期時間