PHP中的Cookie检测问题

PHP中的Cookie检测问题,php,cookies,Php,Cookies,下面是我正在使用的简单函数: public function control() { $string = 'lolcheck'; setcookie($string, $string, time() + 120, $this->path, $this->domain); if (isset($_COOKIE[ $string ])) return true; else return false; } 问题是,它只在我打开页面两次时才起作用,因为它

下面是我正在使用的简单函数:

public function control() {
    $string = 'lolcheck';

    setcookie($string, $string, time() + 120, $this->path, $this->domain);

    if (isset($_COOKIE[ $string ])) return true;
    else return false;
}
问题是,它只在我打开页面两次时才起作用,因为它得到了之前设置的cookie

显然,每个人都建议使用这种做法,但它不适合我

我错过什么了吗?

每:

在下一次加载cookie应该可见的页面之前,cookie将不可见。要测试cookie是否成功设置,请在cookie过期之前在下一个加载页面上检查cookie。Expire time通过Expire参数设置。调试COOKIE存在的一个好方法是简单地调用print_r($_COOKIE)

如果您需要在同一页面上访问它,请改用会话,或者在调用
setcookie
后重定向到同一URL。

Per:

在下一次加载cookie应该可见的页面之前,cookie将不可见。要测试cookie是否成功设置,请在cookie过期之前在下一个加载页面上检查cookie。Expire time通过Expire参数设置。调试COOKIE存在的一个好方法是简单地调用print_r($_COOKIE)


如果您需要在同一页面上访问它,请改用会话,或者在调用
setcookie
后重定向到同一URL。

cookie不能以这种方式工作。当设置cookie时,它在下一个请求之前不可用(即相应的
$\u cookie
键存在)

实际情况是:

  • 客户端发送一个请求
  • 服务器发送包含设置Cookie响应头字段的响应
之后,客户端将cookie与以下任何请求一起发送:

  • 客户端发送包含相应Cookie请求头字段的请求
  • 服务器注册
    $\u COOKIE
    密钥

Cookies不是这样工作的。当设置cookie时,它在下一个请求之前不可用(即相应的
$\u cookie
键存在)

实际情况是:

  • 客户端发送一个请求
  • 服务器发送包含设置Cookie响应头字段的响应
之后,客户端将cookie与以下任何请求一起发送:

  • 客户端发送包含相应Cookie请求头字段的请求
  • 服务器注册
    $\u COOKIE
    密钥

Cookies是作为http头交换的一部分设置/接收的,因此,在通常情况下,Cookies是客户端(浏览器)发送/接收的第一件事。对于您的问题,客户端只知道在第二次请求时它有一个cookie要发送


使用一个好的Firefox扩展,例如,可以帮助您发现何时发送了哪些内容。

Cookies是作为http头交换的一部分设置/接收的,因此,在通常情况下,客户端(浏览器)发送/接收的第一件事就是Cookies。对于您的问题,客户端只知道在第二次请求时它有一个cookie要发送


使用一个好的Firefox扩展,例如,可以帮助您发现何时发送了哪些内容。

除非您使用
setcookie
,否则您应该使用
$\u SESSION
,让PHP为您处理cookie。@meagar我应该创建一个会话来检查cookie吗?不,你可能根本不应该做饼干检查。只需使用
$\u SESSION
并完成它。假设您的用户启用了cookie是安全的。除非您有使用
setcookie
的特定原因,否则您应该使用
$\u SESSION
,让PHP为您处理cookie。@meagar我应该只为cookie检查而创建会话吗?不,您可能根本不应该进行cookie检查。只需使用
$\u SESSION
并完成它。假设你的用户启用了cookies是安全的。该死,我完全错过了这一部分!我怎么能检查Cookie是否启用?该死,我完全错过了那部分!我如何检查Cookie是否已启用?