你如何用PHP更新cookie?

时间:2011-06-26 23:57:00

标签: php cookies httpcookie cakephp

如果我使用相同的Cookie名称拨打setcookie()两次,我会创建两个Cookie。

如何更新现有Cookie?

5 个答案:

答案 0 :(得分:25)

您可以使用setcookie()函数更新cookie值,但是您应该在第4个参数中添加'/',这是'path'参数,以防止创建另一个具有相同名称的cookie 。

即。 setcookie('cookie_name', 'cookie_value', $exp_date, '/');

答案 1 :(得分:18)

您无法更新Cookie本身,但您可以覆盖它。 否则,这就是您要寻找的内容:http://php.net/manual/en/function.setcookie.php

有效。请务必阅读该页面的“常见陷阱”。

您也可以使用超级全球$_COOKIE['cookie_name']来读/写Cookie。

答案 2 :(得分:4)

因此,如果指示如此,PHP将发送两个Set-Cookie:标头,只有最后一个应该在浏览器中保留。
Netscape Cookie规范http://curl.haxx.se/rfc/cookie_spec.html说:

  

相同路径和名称的实例将相互覆盖,最新实例优先。相同路径但名称不同的实例将添加其他映射。

但是,避免这种边缘条件可能是明智之举。重构您的应用程序,以便它不需要覆盖已发送的cookie。

答案 3 :(得分:0)

请确保在echo之前没有setcookiesetcookie通过标头与浏览器通信,如果您之前调用过echo,则标头+正文已发送,服务器无法再通过标头向浏览器发送setcookie。这就是为什么您可能会看到它不起作用的原因。

在这种情况下,php服务器日志文件中应有如下行报告警告:

DEFAULT: PHP Warning:  Cannot modify header information - headers already sent by (output started at /path/to/your/script.php:YY) in /path/to/your/script.php on line XX

答案 4 :(得分:-1)

调用COOKIE并删除用户名值 setCookie方法("用户名"'',0," /&#34);