不能理解php中的setcookie()函数的行为

问题描述:

为什么下面的代码在浏览器中显示“mamun”而不是“sajib”?请解释机制。不能理解php中的setcookie()函数的行为

<?php 

$exp = time() + 3600; 

setcookie("name", "sajib", $exp); 
echo $_COOKIE["name"]; 

setcookie("name", "mamun", $exp); 

?> 
+0

你如何测试脚本? –

+1

只有在重新加载页面后才能访问cookie。意思是在你第一次重新加载cookie之后:'name'的值是'mamun'。然后你将它设置为'sajib',在下一次重新加载后你将可以访问,但现在这个值仍然是'mamun',这就是为什么你会得到这个输出。如果你重新加载它,同样的事情发生^^。意味着你永远无法在这里输出'sajib'。 – Rizier123

当您使用setcookie()时,cookie将在客户端的浏览器上设置。在下一页加载时,Cookie将发送回您网站的网络服务器。

因此,您不能立即在与您设置Cookie相同的过程中访问新的Cookie。

但是您可以在setcookie()之前/之前使用$_COOKIE['name'] = 'sajib',因此$ _COOKIE数组将更改为新值。

+0

另外,发送内容(例如,通过回显)后,您无法将头数据(也包括cookie)发送到浏览器。你必须发送标题,然后是内容。 – David