我有个关于Codeigniter会话的问题。当我登录到我们的系统时,就会设置会话。在这个会话中,"user_id“也设置了。在很少重定向之后,我的"user_id“会话变量为null (没有值)。
然后,由于user_id的空值,它重定向到登录页面。为何会出现这种情况?
请参阅下面的config.php文件
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path'] = "/";
$config['cookie_secure'] = FALSE;
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
请帮我解决这个问题。好了!
发布于 2015-10-26 03:21:14
发布于 2015-10-26 03:32:34
您没有提供太多关于您的应用程序的信息,但是如果在重定向之间有大量ajax请求,您可能会遇到一个典型的CI 2错误,即在会话轮转窗口期间,每当发出ajax请求时,就会出现一个有效重置用户会话的争用条件。
CodeIgniter将会话存储在由session_id字段索引的表中。这是一个唯一的标识符,它是在会话创建和旋转时随机生成的。每次请求后,session_id作为cookie发送到浏览器,并且覆盖存储在cookie中的任何session_id。当客户端和服务器之间在任何时候只发送一个请求时,该系统在正常运行期间运行良好。在正常操作期间,客户端和服务器之间将交换相同的cookie。在会话轮转时,服务器将向客户端发送一个新cookie,客户端将存储它,并在下一个请求时将新cookie重新发送回服务器。这也能正常工作。
当服务器在会话轮转期间接收两个同时请求时(同时被定义为在接收所有其他在轨请求之前发送给服务器的请求),这是不起作用的。
这里的链接彻底地解释了它,如果这是您的情况,那么您可以在那里找到修复。
这个问题之所以存在,是因为浏览器发出ajax请求的方式(或者至少是我们发出ajax请求的方式),以及CodeIgniter处理会话轮转的方式。
PS。它的代码点火器不是代码点火器:)
https://stackoverflow.com/questions/33344291
复制相似问题