我的饼干行为不端。

时间:2013-11-17 01:43:08

标签: php cookies

警告: 阅读此内容可能会让您微笑和/或笑/或至少轻笑。为您的利益注入温和的幽默。让你微笑是我对你的时间表示感谢的方式。

Cookie成功set或是吗?

setcookie("REF", $referer, strtotime( '+30 days' ) );
print_r($_COOKIE);

当来自推介网站时,我得到[REF] => site,这是正常的。接下来,我打开新标签并直接转到该网址。再一次,我得到[REF] => site - 很棒它似乎工作!

但等等,不要太兴奋。它工作的“外观”显然具有误导性。这是一种幻觉;这个该死的kool-aid机器在甜点中的deja-vu ---一遍又一遍。无论如何,我点击f5并刷新页面,现在疯狂开始了。

猜猜会发生什么?你猜到了吗?在这里,我只会告诉你; Cookie不再是 set Array() 为空。什么弗里克?

在Chrome和Firefox中测试过,两者的结果相同。

问题:
如何使Cookie持续到期?为什么/如何刷新页面打破cookie? Bonus: Chrome中的Cookie集是否可以在Firefox中自动设置? (我假设,没办法!但有时候我觉得 ANYTHING 是可能的)

1 个答案:

答案 0 :(得分:1)

由于没有人发布答案。我会为了社区的利益而这样做。

为了在每次后续页面加载时不重置cookie,必须使用 if语句检查cookie是否已存在,然后再发出新cookie。 (我想我们不想让人/浏览器变胖,或者我们只是吝啬cookie)。

工作代码是:

If ($_COOKIE == null) { 
    setcookie("REF", $referer, strtotime( '+30 days' ) );
}

特别感谢@Quentin指出这一点。