警告: 阅读此内容可能会让您微笑和/或笑/或至少轻笑。为您的利益注入温和的幽默。让你微笑是我对你的时间表示感谢的方式。
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 是可能的)
答案 0 :(得分:1)
由于没有人发布答案。我会为了社区的利益而这样做。
为了在每次后续页面加载时不重置cookie,必须使用 if
语句检查cookie是否已存在,然后再发出新cookie。 (我想我们不想让人/浏览器变胖,或者我们只是吝啬cookie)。
工作代码是:
If ($_COOKIE == null) {
setcookie("REF", $referer, strtotime( '+30 days' ) );
}
特别感谢@Quentin指出这一点。