如何获取饼干在PHP坚持?
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";
?>
在运行该命令的代码给我的输出:
阵列(0){}注意:未定义指数:盖在jar.php第3行
从嵌入的代码jar.php
在give_cookie.php
给我的输出:
阵列(1){[ “盖”] => BOOL(真)}开放
你应该给当cookie将过期的UNIX时间戳(从新纪元计算)作为第三个参数的函数调用。
当时的cookie过期。 这是一个Unix时间戳,以便在从epoch的秒数。 换句话说,你很可能会随着时间的()函数加上的秒数,你希望它过期之前设置此。 或者,你可以使用mktime()。 时间()+ 60 * 60 * 24 * 30将设置cookie在30天后到期。 如果设置为0,或省略,cookie将在会话结束时终止(当浏览器关闭)。
我建议你阅读文档setcookie
。
你设置cookie的muffin
,并试图取回lid
。你需要的setcookie用于lid
为好。
我想你设定的时间仍然是在过去
目前
time() = 1348584550
100 * 60 * 60 * 24 * 30 = 259200000
所以尽量
setcookie("muffin", "55", time() + (100 * 60 * 60 * 24 * 30));
if($_COOKIE["muffin"])
echo "open";
其他的答案是正确的,但需要注意的事项。 当服务器发送HTML到客户端的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,还有更多的问题与您的代码(除它以外没有任何用处)。 请告诉我们你正在努力实现,所以我们可以帮你多一点什么。