Coo*_*kie 23 php cookies cakephp httpcookie
如果我setcookie()使用相同的cookie名称拨打两次,我会创建两个cookie.
你如何更新现有的cookie?
Oma*_*med 28
您可以使用setcookie()函数更新cookie值,但是您应该在第4个参数中添加'/'作为'path'参数,以防止创建另一个具有相同名称的cookie.
即 setcookie('cookie_name', 'cookie_value', $exp_date, '/');
Fra*_*isc 20
您无法更新cookie本身,但您可以覆盖它.否则,这就是你要找的:http://php.net/manual/en/function.setcookie.php
有用.请务必阅读该页面的"常见陷阱".
您还可以使用超级全局$_COOKIE['cookie_name']来读/写cookie.
确保没有调用echo前setcookie。setcookie通过 header 与浏览器通信,如果您echo之前调用,header+body 已经发送,服务器无法再setcookie通过 header发送到浏览器。这就是为什么您可能会看到它不起作用的原因。
在这种情况下,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
Run Code Online (Sandbox Code Playgroud)
因此,虽然 PHP 会发送两个 Set-Cookie: 标头(如果有指示),但只有最后一个应该在浏览器中保持不变。
Netscape cookie 规范http://curl.haxx.se/rfc/cookie_spec.html说:
相同路径和名称的实例将相互覆盖,最新的实例优先。相同路径但不同名称的实例将添加额外的映射。
然而,避免这种边缘条件可能是可取的。重构您的应用程序,使其不需要覆盖已发送的 cookie。
| 归档时间: |
|
| 查看次数: |
68076 次 |
| 最近记录: |