我不知道为什么,但以下似乎没有按预期工作:
<?php
setcookie('my_cookie', $_GET['v'], time() + (86400 * 7));
echo $_COOKIE['my_cookie'];
?>
如果您将它放在 PHP Web 服务器上的文件中,并使用yourdomain.com/index.php?v=value
. 该值仅在第二次请求时打印到页面。为什么不是一号?
$_COOKIE数组仅代表来自客户端的请求中的那些 cookie 。setcookie()添加一个 HTTP 标头,要求客户端在后续请求期间发送 cookie 。
通常,您不应该希望请求中的 cookie 看起来比实际更多。相反,您通常应该在脚本的早期处理 cookie ,在其他地方维护状态,并在脚本的后期设置或重置 cookie 。
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)
查看原始标题。