我不确定原因,但以下似乎没有按预期工作:
<?php
setcookie('my_cookie', $_GET['v'], time() + (86400 * 7));
echo $_COOKIE['my_cookie'];
?>
如果您将其放在PHP Web服务器上的文件中,并使用yourdomain.com/index.php?v=value
的查询进行调用。该值仅在第二个请求中打印到页面。为什么不在1号?
答案 0 :(得分:7)
$_COOKIE数组仅代表来自客户端请求的cookie。 setcookie()添加了一个HTTP标头,要求客户端在后续请求期间发送Cookie。
通常,您不应该希望它看起来像请求中的cookie多于实际的cookie。相反,您通常应该在脚本中处理cookie 早期,在其他地方维护状态,并在脚本中设置或重置 late 。
答案 1 :(得分:1)
setcookie("my_cookie", "value")
在对浏览器的响应中创建HTTP标头Set-Cookie: my_cookie=value
。浏览器存储此cookie。
下次同一个客户端调用服务器时,它会将请求中的cookie作为标头Cookie: my_cookie=value
包含在内,而php将其作为$_COOKIE['my_cookie']
提供。
您还可以使用print_r($_COOKIE)
或print_r($_REQUEST)
对原始标题进行检查。