give_cookie.php
<?php
if (!isset($_COOKIE["muffin"]))
setcookie("muffin", "55", 100 * 60 * 60 * 24 * 30);
$_COOKIE["lid"]=true;
?>
jar.php
<?php
var_dump($_COOKIE);
if($_COOKIE["lid"])
echo "open";
?>
按顺序运行代码可以输出:
array(0){}注意:未定义的索引:第3行的jar.php中的盖子
在jar.php
中嵌入来自give_cookie.php
的代码,可以输出:
array(1){[“lid”] =&gt; bool(true)}打开
答案 0 :(得分:2)
你应该给出一个UNIX时间戳,表明cookie何时到期(自纪元以来计算)作为函数调用的第三个参数。
Cookie过期的时间。这是一个Unix时间戳,所以数量也是如此 自纪元以来的几秒钟。换句话说,你很可能会设置 这与time()函数加上你之前的秒数 希望它过期。或者你可以使用mktime()。时间()+ 60 * 60 * 24 * 30会 将Cookie设置为在30天后过期。如果设置为0,或省略,则 cookie将在会话结束时(浏览器时)到期 关闭)。
我建议你阅读setcookie
的文档。
答案 1 :(得分:1)
您正在为muffin
设置Cookie并尝试检索lid
。您还需要为lid
设置setcookie。
答案 2 :(得分:1)
我认为您设置的时间仍在过去
目前
time() = 1348584550
100 * 60 * 60 * 24 * 30 = 259200000
所以试试
setcookie("muffin", "55", time() + (100 * 60 * 60 * 24 * 30));
if($_COOKIE["muffin"])
echo "open";
答案 3 :(得分:0)
其他答案是正确的,但还有另一个考虑因素。当服务器将html发送到客户端时,Cookie会设置为,当用户请求页面时,会从用户收到Cookie。这意味着,如果您尝试读取正确的cookie,则在下次用户重新加载页面之前它将为空。避免这种情况的唯一方法是,正如您所做的那样,不确定是否有意,手动分配cookie的值并同时设置它,因为它是超全局的。这不是一个好习惯,因为Cookie的值会因此执行而丢失。这应该工作,但没有做太多工作:
<强> give_cookie.php 强>
<?php
if (!isset($_COOKIE["muffin"]))
setcookie("muffin", "55", 100 * 60 * 60 * 24 * 30);
setcookie("lid", TRUE, time() + 100 * 60 * 60 * 24 * 30);
$_COOKIE["lid"]=TRUE;
?>
<强> jar.php 强>
<?php
if($_COOKIE["lid"])
echo "open";
?>
PS,你的代码还有很多问题(除了它没有任何用处)。告诉我们您要实现的目标,以便我们为您提供更多帮助。