|
我不知道这个论坛有没有人这么修改过,我没找到,所以发表下!
都知道CI自带的session类默认是依靠php的cookie储存的,
其实cookie储存是有很多弊端的,大小限制,还有安全问题,所以非必要最好使用第三方session类库!
我使用他主要是因为我做的这个项目涉及到跨域的问题,所以我决定使用CI自带的session类!
可是很多人都发现了CI自带的session类不会随浏览器自杀,即使你把期限设置为0,他就变成永久!囧!
我看论坛也有很多人问,所以就简单修改下,让他支持随浏览器自杀!
复制一个Session.php到你程序目录里的libraries目录下,
修改行108-118:
PHP复制代码
if (is_numeric($expiration))
{
if ($expiration > 0)
{
$this->sess_lengths = $this->CI->config->item('sess_expiration')+time();
$this->sess_length = $this->CI->config->item('sess_expiration');
}
else
{
$this->sess_lengths = 0;
$this->sess_length = (60*60*24*365*2);
}
}
复制代码
多加一个变量的原因就是因为这样简单,而不需要去修改其他的$this->sess_length
修改行310-317:
PHP复制代码
setcookie(
$this->sess_cookie,
$cookie_data,
$this->sess_lengths,
$this->CI->config->item('cookie_path'),
$this->CI->config->item('cookie_domain'),
0
);
复制代码
这样子就可以了!
只要在config.php中设置$config['sess_expiration'] = 0;
session就会随浏览器自杀了!
如果不是特殊需要,还是推荐使用其他第三方session类库!
[ 本帖最后由 vale888 于 2008-11-6 17:12 编辑 ] |
评分
-
查看全部评分
|