这是我继承的一个项目,上面写着:define('CI_VERSION', '3.0-dev');在 CodeIgniter.php 中。这是一个电子商务网站,每隔一段时间就有客户提示他们被注销并且他们的购物车内容随机清空。这似乎在同一天对同一个客户一遍又一遍地发生,但对其他任何人都没有。同一位客户可能会在几天后使用同一台机器和浏览器再次尝试,但根本没有问题。昨天一位客户对此进行了投诉,我在同一天在 ci_sessions 表中发现了 7 个针对其 IP 地址的不同 session 。因为我自己永远无法重现这个问题,所以我很难弄清楚。我在网上阅读了很多关于 CI 删除 session 的帖子,并且我已经对我发现的配置值进行了所有建议的更新,希望它会被修复,只是让另一个客户在几周内再次提示完全相同的事情之后。如果您以前遇到过此问题,也许您可以提出其他解决方案?
这是我的一些配置设置:
$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;
最佳答案
A customer complained about this yesterday and I found 7 different sessions for their IP address on the same day in ci_sessions table.
这似乎是瓶颈,因为为用户创建了新 session ;也会导致取消设置购物车(我猜,购物车是基于 $_SESSION
的,它被重新生成/销毁并创建)。
Since I can never reproduce the issue myself I'm having a hard time figuring it out.
客户端可能正在使用隐私浏览。尝试清除浏览器(系统)中的所有 cookie 以重现它。相关帖子也可能对您有所帮助:Remembering PHP Session Private Browsing
仍然,对这两行有一些模糊的感觉。为什么不将 sess_expiration
增加到 $config['sess_expiration'] = 60 * 60 * 24;
并将 sess_expire_on_close
增加到 $config['sess_expiration'] = false;
关于php - codeigniter 3.0-dev 随机删除 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30676479/