1

我不知道为什么,但以下似乎没有按预期工作:

<?php
    setcookie('my_cookie', $_GET['v'], time() + (86400 * 7)); 
    echo $_COOKIE['my_cookie'];
?>

如果您将它放在 PHP Web 服务器上的文件中,并使用yourdomain.com/index.php?v=value. 该值仅在第二次请求时打印到页面。为什么不是一号?

4

2 回答 2

7

$_COOKIE数组仅代表来自客户端的请求中的那些 cookie 。setcookie()添加一个 HTTP 标头,要求客户端在后续请求期间发送 cookie 。

通常,您不应该希望请求中的 cookie 看起来比实际更多。相反,您通常应该在脚本的早期处理 cookie ,在其他地方维护状态,并在脚本的后期设置或重置 cookie 。

于 2013-08-03T13:25:31.117 回答
1

setcookie("my_cookie", "value")Set-Cookie: my_cookie=value在对浏览器的响应中创建一个 HTTP 标头。浏览器存储此 cookie。

下次同一个客户端调用服务器时,它会将 cookie 作为标头包含在请求中Cookie: my_cookie=value,并且 php 将其作为$_COOKIE['my_cookie'].

您也可以使用print_r($_COOKIE)print_r($_REQUEST)查看原始标题。

于 2013-08-03T15:35:34.700 回答