2

好吧,我完全感到困惑。

这是我的代码:

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

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

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

4

4 回答 4

1

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

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

于 2012-03-19T03:19:35.593 回答
1

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')

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

于 2012-03-19T03:20:30.140 回答
0

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

于 2012-03-22T16:21:38.860 回答
0

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

于 2012-04-16T00:42:16.767 回答