PHP setcookie 域
某些应用程序(不是我编写的,也不是用 PHP 编写的)为 www.example.com
域创建了一个 cookie。
我正在尝试更换那个cookie。所以在 PHP 中我做了:
setcookie('mycookie','mydata',time() + 2*7*24*60*60,'/','www.example.com', false);
然而,生成的 cookie 是为域创建的:.www.example.com
,请注意点“。”位于域之前。
所以它不会替换它,而是创建另一个 cookie。 我能做些什么?
Some application, not written by me, and not in PHP, creates a cookie for the domain www.example.com
.
I am trying to replace that cookie. So in PHP I did:
setcookie('mycookie','mydata',time() + 2*7*24*60*60,'/','www.example.com', false);
However the resulting cookie is created for domain: .www.example.com
, note the dot "." ahead of the domain.
So it doesn't replace it, it creates another cookie.
What can I do?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
该问题也在这里得到解决:
https://www.php.net/manual/en/function.setcookie。 php
请参阅 jah 的评论:
您也可以尝试使用
.example.com
作为域。尾随点将允许example.com
的所有子域使用 cookie,并且可能会覆盖www.
-cookie,但我将首先采用上述解决方案。The issue is also adressed here:
https://www.php.net/manual/en/function.setcookie.php
See comment by jah:
You could also try
.example.com
as the domain. The trailing dot will allow a cookie for all subdomains forexample.com
and could overwrite thewww.
-cookie, but I'll go with the above solution first.如果指定域,则应遵循 RFC 2109 并在域前添加点前缀;否则客户就会这样做。但如果您根本不指定域,客户端将采用请求的域。
If you specify a domain, you should follow RFC 2109 and prefix the domain with a dot; otherwise the client will do that. But if you don’t specify a domain at all, the client will take the domain of the request.
尝试创建多个具有相同名称但不同域的其他 cookie。示例:
然后在 Firebug 中检查这些命令创建的 cookie。如果您不断收到双 cookie,那么这可能是 PHP 中的一个错误。另外,尝试在JavaScript代码中设置cookie,看看是否仍然遇到同样的问题。
Try to create several other cookie with same name, but a different domain. Example:
Then inspect the cookie created by these command in the Firebug. If you kept getting a double cookie, then this might be a bug in the PHP. Also, try to set the cookie in the JavaScript code, see if you still got the same problems.