Cookies是不是在PHP坚持?(Cookies aren't persisting in

2019-07-31 21:30发布

如何获取饼干在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.phpgive_cookie.php给我的输出:

阵列(1){[ “盖”] => BOOL(真)}开放

Answer 1:

你应该给当cookie将过期的UNIX时间戳(从新纪元计算)作为第三个参数的函数调用。

当时的cookie过期。 这是一个Unix时间戳,以便在从epoch的秒数。 换句话说,你很可能会随着时间的()函数加上的秒数,你希望它过期之前设置此。 或者,你可以使用mktime()。 时间()+ 60 * 60 * 24 * 30将设置cookie在30天后到期。 如果设置为0,或省略,cookie将在会话结束时终止(当浏览器关闭)。

我建议你阅读文档setcookie



Answer 2:

你设置cookie的muffin ,并试图取回lid 。你需要的setcookie用于lid为好。



Answer 3:

我想你设定的时间仍然是在过去

目前

time() = 1348584550

100 * 60 * 60 * 24 * 30 =  259200000

所以尽量

setcookie("muffin", "55", time() + (100 * 60 * 60 * 24 * 30));

if($_COOKIE["muffin"])
    echo "open";


Answer 4:

其他的答案是正确的,但需要注意的事项。 当服务器发送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,还有更多的问题与您的代码(除它以外没有任何用处)。 请告诉我们你正在努力实现,所以我们可以帮你多一点什么。



文章来源: Cookies aren't persisting in PHP?