0

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

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);
4

1 回答 1

0

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

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

这是我们为使其发挥作用而采取的一种技巧。

于 2013-02-21T07:42:01.153 回答