如果我使用相同的Cookie名称拨打setcookie()
两次,我会创建两个Cookie。
如何更新现有Cookie?
答案 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
之前没有setcookie
。 setcookie
通过标头与浏览器通信,如果您之前调用过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);