max*_*max 10 php codeigniter codeigniter-2
我正在使用CodeIgniter 2.1.0创建的网站.
我有时会注意到,当我重新加载页面几次或者非常快地打开几页时,或者当我在代码中出错时(这些错误与会话无关)我会被注销.
本网站使用名为Ion_authand的库进行识别:
public function logged_in()
{
$identity = $this->ci->config->item('identity', 'ion_auth');
return (bool) $this->ci->session->userdata($identity);
}
Run Code Online (Sandbox Code Playgroud)
是否有我应该知道的错误或其他内容?
$config['sess_cookie_name'] = 'cisession';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'cisession';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
Run Code Online (Sandbox Code Playgroud)
在这个网站上,会话几乎每页都会更新.
max*_*max 10
这是我发现的:
CodeIgniter的会话库中存在一个错误,它会通过快速请求销毁会话.
在这里您可以找到有关此错误的更多信息
https://github.com/EllisLab/CodeIgniter/issues/154
Run Code Online (Sandbox Code Playgroud)
这个bug仍然存在于最新的稳定版本2.1.3中.
我通过用来自GitHub的CI3-DEV替换我的会话库来解决这个问题:
https://github.com/EllisLab/CodeIgniter/blob/b211adee89f5fd2192051e9c0826146bd150f469/system/libraries/Session.php
Run Code Online (Sandbox Code Playgroud)
在我的配置中加入一个长的sess_expiration和sess_time_to_update ...我的是86400和86500.
CodeIgniter将会话数据保存在cookie中.如果会话数据具有取消设置cookie的任何特殊字符,则会话也将被销毁.
它还会产生更多的尺寸限制问题.Cookie可以根据浏览器保存有限大小的数据.如果您尝试在CodeIgniter会话中存储更多数据,并且CodeIgniter尝试将其保存在cookie中,则可能无法保存超过该限制.
此外,当cookie通过网络发送时,它会不必要地增加网络上的流量.不应将所有会话数据保存在cookie中.
最好使用本机会话库.它使用PHP的本机会话.
https://github.com/EllisLab/CodeIgniter/wiki/Native-session
要么
https://github.com/EllisLab/CodeIgniter/wiki/PHPSession
你可以比较两者.
有关CodeIgniter如何存储会话数据,请参阅CodeIgniter会话文档.
https://www.codeigniter.com/user_guide/libraries/sessions.html
| 归档时间: |
|
| 查看次数: |
3692 次 |
| 最近记录: |