2014-09-22 572 views
0

我正在使用codeigniter框架。 这是我在浏览器中设置cookie的currenct代码。如果有一个已知的IP地址,那么它不会要求你输入安全答案。 o.w.用户需要输入安全答案。在PHP中设置永久性Cookie

一切工作正常,除非我完全关闭浏览器或重新启动我的电脑,cookies会被删除,并要求我再次输入该信息。

CODE

$ip_address = $_SERVER['REMOTE_ADDR']; 
$ip_cookie = array('name'=>'ip', 
        'value'=>$ip_address, 
        'expire' => time() + (10 * 365 * 24 * 60 * 60) 
        ); 
set_cookie($ip_cookie); 

正如你可以看到我还设置有效期限这一点。

+0

查看CodeIgniter cookie助手:https://ellislab.com/codeigniter/user-guide/helpers/cookie_helper.html – 2014-09-22 15:40:50

+0

我已经检查过了。我发现你只需要指定一个到期时间。我准备在我的代码中提到。 – 2014-09-22 15:42:29

+0

确保您的浏览器没有配置为在关闭时删除cookie – FuzzyTree 2014-09-22 15:47:34

回答

1

可能不是原因,但你设定了54年左右的到期日期。从the manual

到期以秒,其将被添加到当前的时间 设置。 请不要包含时间,而只需要从现在起您希望Cookie有效的秒数 。如果到期时间为 设置为零,则只有在浏览器处于打开状态时,Cookie才会持续。

也许浏览器有一个到期时间的上限。您还应该检查您的浏览器开发人员工具是否收到实际值。

+0

因此,您希望我从过期时间中删除'time()'吗? – 2014-09-22 15:44:14

+0

由于手册说你必须这样做才能获得一个有效的cookie,这是一个有趣的行为... – 2014-09-22 15:46:19

+0

只要时间关注,我用'time()+ 60 * 60 * 24 * 30'在常规密码cookie中。同样的事情也发生在这一点上。它再次要求密码。 – 2014-09-22 15:48:25