这是我继承的一个项目,它说: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;
答案 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"
。