php - codeigniter 3.0-dev 随机删除 session

标签 php codeigniter session config cart

这是我继承的一个项目,上面写着: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/

相关文章:

php - 如何设置sendmail中的From字段?

php - 无法加载请求的文件: templates/header. php

php - 如何在Codeigniter中上传图像并将其保存到数据库?

java - 将 1 MB 字节数组存储为 session 属性

session - 在 Magento 中对 session 和后端缓存使用单个 Redis 实例是个坏主意吗?

php - WHERE 语句 SQL 不起作用

php - Foreach 循环 : split elements in groups of five and six

php - WordPress:获取数据并排序

php - 使用 CodeIgniter 和 MySQL 按列名排序

ios - Xcode导出/上传错误: Your session has expired.请登录