用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4413|回复: 5
收起左侧

[已解决] 設置session的過期時間

[复制链接]
发表于 2011-4-22 16:58:59 | 显示全部楼层 |阅读模式
本帖最后由 wssx 于 2011-4-22 17:37 编辑

項目登陸后會保存資料到session中,現在config中的$config['sess_expiration']                = 60;已經這樣設置了,也就是1分鐘后session就會過期,但是過了10分鐘,發現session還在,還是可以進行登陸后才能進行的操作。
PHP复制代码
<?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);
        }
}
 
 
复制代码
這裡的代碼是判斷是否登陸用的
发表于 2011-4-22 17:02:53 | 显示全部楼层
那个配置是给ci自带session用的,你用的是什么session???
 楼主| 发表于 2011-4-22 17:06:08 | 显示全部楼层
PHP复制代码
$CI =& get_instance();
                        $CI->load->library('phpsession');
                        if (!$admin_user_id = $CI->phpsession->get('admin_user_id','adminlogin')) {
                                return FALSE;
                        }
复制代码
這段代碼不是說用的是ci的session嗎
发表于 2011-4-22 17:07:56 | 显示全部楼层
回复 3# wssx


   不是吧?你的phpsession是继承ci_session写的吗?
 楼主| 发表于 2011-4-22 17:14:49 | 显示全部楼层
PHP复制代码
 
<?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的過期時間
发表于 2011-4-22 17:56:26 | 显示全部楼层
么事,
<?php
  $lifetime=600;
  session_set_cookie_params($lifetime);
  session_start();
?>

本版积分规则