不能理解php中的setcookie()函数的行为
问题描述:
为什么下面的代码在浏览器中显示“mamun”而不是“sajib”?请解释机制。不能理解php中的setcookie()函数的行为
<?php
$exp = time() + 3600;
setcookie("name", "sajib", $exp);
echo $_COOKIE["name"];
setcookie("name", "mamun", $exp);
?>
答
当您使用setcookie()时,cookie将在客户端的浏览器上设置。在下一页加载时,Cookie将发送回您网站的网络服务器。
因此,您不能立即在与您设置Cookie相同的过程中访问新的Cookie。
但是您可以在setcookie()
之前/之前使用$_COOKIE['name'] = 'sajib'
,因此$ _COOKIE数组将更改为新值。
+0
另外,发送内容(例如,通过回显)后,您无法将头数据(也包括cookie)发送到浏览器。你必须发送标题,然后是内容。 – David
你如何测试脚本? –
只有在重新加载页面后才能访问cookie。意思是在你第一次重新加载cookie之后:'name'的值是'mamun'。然后你将它设置为'sajib',在下一次重新加载后你将可以访问,但现在这个值仍然是'mamun',这就是为什么你会得到这个输出。如果你重新加载它,同样的事情发生^^。意味着你永远无法在这里输出'sajib'。 – Rizier123