設置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);
}
}
這裡的代碼是判斷是否登陸用的 那个配置是给ci自带session用的,你用的是什么session??? $CI =& get_instance();
$CI->load->library('phpsession');
if (!$admin_user_id = $CI->phpsession->get('admin_user_id','adminlogin')) {
return FALSE;
}這段代碼不是說用的是ci的session嗎 回复 3# wssx
不是吧?你的phpsession是继承ci_session写的吗?
<?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的過期時間 么事,
<?php
$lifetime=600;
session_set_cookie_params($lifetime);
session_start();
?>
页:
[1]