在jQuery代码中无法识别Codeigniter会话

问题描述:

我有CI(PHP)登录表单,锁定用户n分钟后,3次不成功的登录尝试并禁用登录表单。检查锁定时间是否结束,我将尝试时间设置为会话(在模型中),并将当前时间与会话进行比较。在某些jQuery代码的登录页面中检查尝试时间。但会话无法在jQuery脚本中识别。在jQuery代码中无法识别Codeigniter会话

CI模型(PHP)

if($this->lockIP($ip_address)){ 
    $this->session->set_userdata('lockout',time()); 
    return true; 
} 

CI视图(jQuery的)

var now = "<?php echo time();?>"; 
var attempt = "<?php echo $this->session->userdata('lockout');?>"; 
alert(now - attempt); 
+0

试试这个$ config ['sess_time_to_update'] = $ config ['sess_expiration'];在config.php文件 – Shaolin 2013-02-21 07:30:04

+0

好吧,它似乎工作,但为什么我应该设置这两个变量一样? – goseo 2013-02-21 07:36:37

+0

我给出了下面的解释,如果它有帮助,请将它标记为答案 – Shaolin 2013-02-21 07:45:33

这是由于在config.php的sess_time_to_update参数。 CI使用它来将会话ID更新为新的会话ID。如果更改发生在ajax调用中,CI发送一个新的cookie来告诉浏览器新的会话ID。不幸的是,浏览器似乎忽略了这个cookie并保留了旧的会话ID。

这就是为什么我们设置$ config ['sess_time_to_update'] = $ config ['sess_expiration'];

这是我们做的一种技巧。