PHP / Codeigniter会话被破坏

时间:2013-10-22 10:52:18

标签: php codeigniter session

我正在开发一个Web应用程序,创建会话中的用户登录并登录到数据库。

正在发生的事情是,用户将无法通过自己的选项随机退出。背景故事是,这通常发生在共享帐户的用户身上(不是最好的东西,但应用程序的性质,意味着需要允许)。

这可能是随机退出的原因吗?或者更深入的CI和在数据库中存储会话?我还读到,一起关闭很多AJAX请求会导致SESSION ID发生变化,然后可能会覆盖数据库记录并将用户注销。这又有可能吗?我认为这个不那么重要,因为我已经写了一个补丁来阻止这种情况发生。

会话配置:

$config['sess_cookie_name']     = 'app';
$config['sess_expiration']      = 0;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update']  = 300;
$config['sess_use_multisessions'] = TRUE;
$config['sess_multisession_expiration'] = 10;

3 个答案:

答案 0 :(得分:1)

抱歉,我之前的回答。我错了。我不确定这两个配置设置,也无法在CI手册中找到。
$ config ['sess_use_multisessions'] = TRUE;
$ config ['sess_multisession_expiration'] = 10;

但是,这不会有任何问题。

请尝试将$ config ['sess_match_useragent']设为TRUE。

答案 1 :(得分:0)

您是否将会话存储在数据库(ci_sessions表)中?尝试将user_agent的字段类型更改为mediumtext

答案 2 :(得分:0)

我已将配置设置$config['sess_time_to_update'] = 300;更改为$config['sess_time_to_update'] = 8400;它的行为比以前更好了。通过执行此操作,您可能会遇到安全问题,因为会话需要很长时间才能更新,直到更新会话ID仍然存在相同。

更多我也在寻找一个完美的解决方案,我也像在stackoverflow上的许多其他线程一样为ajax工作,但这对我不起作用。

在数据库(ci_sessions table)中,我还将user_agent的字段类型更改为text,它也不适用于我。