codeigniter 3.0-dev随机丢弃会话

时间:2015-06-05 22:03:28

标签: php codeigniter session config cart

这是我继承的一个项目,它说:define(' CI_VERSION',' 3.0-dev');在CodeIgniter.php中。这是一个电子商务网站,每隔一段时间,客户就会抱怨他们会被注销,他们的购物车内容会随机清空。这似乎在同一天对同一个客户一次又一次地发生,但对其他任何人都没有。几天后,同一个客户可以从同一台机器和浏览器再次尝试,而根本没有问题。一位客户昨天抱怨这一点,我在ci_sessions表中的同一天发现了7个不同的IP地址会话。由于我自己永远无法重现这个问题,所以我很难搞清楚这个问题。我已经在线阅读了一些有关CI删除会话的帖子,并且我已经对我发现的配置值进行了所有建议的更新,希望它能够修复,只是让另一个客户抱怨完全相同的事情几周之后。如果您之前遇到过这个问题,也许您可​​以提出其他解决方案吗?

以下是我的一些配置设置:

$config['sess_cookie_name']     = 'pyrocms' . (ENVIRONMENT !== 'production' ? '_' . ENVIRONMENT : '');
$config['sess_expiration']      = 0;
$config['sess_expire_on_close'] = true;
$config['sess_encrypt_cookie']  = true;
$config['sess_use_database']    = true;
// don't change anything but the 'ci_sessions' part of this. The MSM depends on the 'default_' prefix
$config['sess_table_name']      = 'default_ci_sessions';
$config['sess_match_ip']        = true;
$config['sess_match_useragent'] = true;
$config['sess_time_to_update']  = 300;

$config['cookie_prefix']    = (substr_count($_SERVER['SERVER_NAME'], '.') > 1) ? substr($_SERVER['SERVER_NAME'], 0, strpos($_SERVER['SERVER_NAME'], '.')) . '_' : 'default_';
$config['cookie_domain']    = ($_SERVER['SERVER_NAME'] == 'localhost') ? '' : $_SERVER['SERVER_NAME'];
$config['cookie_path']      = BASE_URI;
$config['cookie_secure']    = false;

$config['global_xss_filtering'] = false;

2 个答案:

答案 0 :(得分:1)

  

一位客户昨天抱怨这一点,我在ci_sessions表中的同一天发现了7个不同的IP地址会话。

这似乎是自为用户创建新会话以来的瓶颈;也会导致推车失败(我猜,推车基于$_SESSION,它被重新生成/销毁并创建)。

  

由于我自己永远无法重现这个问题,所以我很难搞清楚它。

客户端可能正在使用隐私浏览。尝试清除浏览器(系统)中的所有cookie以重现它。相关文章也可能对您有所帮助:Remembering PHP Session Private Browsing

尽管如此,这两条线仍有一些模糊的感觉。为什么不将sess_expiration增加到$config['sess_expiration'] = 60 * 60 * 24;sess_expire_on_close增加到$config['sess_expiration'] = false;

答案 1 :(得分:0)

尝试设置$config['sess_match_ip'] = "FALSE"