【问题标题】:Php cookie not settingphp cookie没有设置
【发布时间】:2012-03-19 03:16:01
【问题描述】:

好吧,我完全困惑了。

这是我的代码:

if ($password == $correct_password[0] && !isset($_COOKIE['user'])) {
            setcookie("user", $email, time() + 3600);
            var_dump(isset($_COOKIE['user']));
            echo "!";
        }

所以它正在执行 var_dumps,这意味着应该调用 setcookie。但是紧随其后的那一行(检查它是否已设置)说它没有设置!

如果有人能指出问题,将不胜感激。谢谢

【问题讨论】:

    标签: php cookies setting


    【解决方案1】:

    $_COOKIE 在脚本第一次启动时被填充/加载,然后在脚本的生命周期内再次由 PHP 不更新。通过 setcookie 设置 cookie 只会在下一次执行脚本时显示在 $_COOKIE 中。

    这适用于所有超全局变量,除了 $_SESSION。它们在脚本启动时被填充/初始化,然后 PHP 不再接触它们。 $_SESSION 在您调用 session_start() 时填充(或会话设置为自动启动),这可能在脚本的生命周期内执行多次。

    【讨论】:

    • 我有这个 scipt <?php $email = "me@gmail.com"; setcookie("foo", $email, time() + 60); ?> <html> <body> <?php var_dump(isset($_COOKIE['foo'])); ?> </body> </html>,如果我继续刷新页面,它仍然说 cookie 没有设置
    【解决方案2】:

    PHP 是一种服务器端语言。

    这意味着它可以生成它想要的任何东西,然后将其传递给客户端。
    就是这样。
    单个请求没有返回和转发。

    1º you instruct the page 'A' to set a cookie
    2º client recieves page 'A' and sets the cookie
    3º client asks for page 'B' (sending the cookie)
    4º server can identify the cookie (only on page 'B')
    

    此处的页面用作理解服务器调用的简单方式。
    为此,您可以两次请求同一页面。

    【讨论】:

    • 于是我做了一个简单的测试页面,在开头设置了cookie,在body中调用了cookie。所以页面被指示设置一个cookie,它接收页面并设置cookie。稍后在页面中它会要求 cookie ......不应该已经设置了吗?或者它是否在 一切都加载之后设置了 cookie?但是,在随后刷新页面时(cookie 应该已经完全设置)它仍然说没有设置 cookie。
    • 好吧,这是我的测试页面:<?php error_reporting(E_ALL); if (setcookie("foo", "me.com", time() + 60 * 2)) { echo "worked"; } ?> <html> <body> <?php var_dump(isset($_COOKIE['foo'])); ?> </body> </html> 几次刷新后它仍然说 cookie 设置未设置,但它正在回显它成功设置了 cookie!发生了什么事?
    【解决方案3】:

    仍然没有找到可靠的有效答案,但经过无数小时的测试,它似乎与时俱进。如果我将到期日期设置得太接近实时,可能它没有注册或其他什么。当我将时间设置得更远时,它似乎起作用了,但是在再次进行大量测试之前我要休息一下。 谢谢

    【讨论】:

      【解决方案4】:

      当您使用 setcookie() 时,它将在 下一次 加载 HTML 时保存其值。如果您想查看具有您刚刚分配的值的 vardump,您需要使用 $_COOKIE['cookie_name'] = $value;

      【讨论】:

        猜你喜欢
        • 2013-07-02
        • 2018-04-09
        • 1970-01-01
        • 2014-11-07
        • 1970-01-01
        • 2016-08-17
        • 2021-07-03
        • 1970-01-01
        相关资源
        最近更新 更多