浏览器发送两个cookie-PHP';的会话处理程序读取了错误的会话处理程序

浏览器发送两个cookie-PHP';的会话处理程序读取了错误的会话处理程序,php,apache,session,cookies,Php,Apache,Session,Cookies,在一段时间内,在单个站点上为域设置了不同值的cookie。这导致一些人在.www.domain.com和.domain.com中设置了同名cookie。本网站的访问地址为www.domain.com。这是通过.htaccess规则实现的 代码将使用.domain.com。现在进入会话.cookie\u域继续 我遇到的问题是,当两个cookie都存在时,浏览器会同时发送这两个cookie(两者都有效)。我在标题中看到了这一点,在转储apache\u request\u headers()时也是如此

在一段时间内,在单个站点上为
设置了不同值的cookie。这导致一些人在
.www.domain.com
.domain.com
中设置了同名cookie。本网站的访问地址为
www.domain.com
。这是通过.htaccess规则实现的

代码将使用
.domain.com
。现在进入
会话.cookie\u域
继续

我遇到的问题是,当两个cookie都存在时,浏览器会同时发送这两个cookie(两者都有效)。我在标题中看到了这一点,在转储
apache\u request\u headers()
时也是如此,但是,当我转储
$\u COOKIE
时,我只看到其中一个

["Cookie"]=>
  string(74) "foobar=hkej4qdnq5kismiq3kl07qv6k2; foobar=ocvn7anlu2f2k2l37nl9ou3c21"
然后

array(1) { ["foobar"]=> string(26) "hkej4qdnq5kismiq3kl07qv6k2" } 
我的会话接口
read($id)
方法正在检查旧cookie,而不是我们在登录时设置的cookie


解决这个问题的最佳方法是什么?我想我可以更改会话名称/标识符,然后重新开始。或者在我的
read
实现中评估Apache头。我没有发现太多与搜索web相关的内容,只是w3schools的一堆绒毛污染了搜索结果,所以我认为这可能是一个很好的帖子。

我遇到了同样的问题,并通过更改会话名称解决了它

PHP允许您访问变量
$\u SERVER[“HTTP\u COOKIE”]
并自己解析它。这允许您访问cookie的两个值,但仍然无法区分正确的cookie和错误的cookie


除非那些cookie包含真正有价值的数据,否则我不会关心旧的值,而只是开始新的值。

只要将会话名称从PHPSESSID更改为SITESESSID或其他您选择的内容即可。这将确保应用程序同时忽略旧cookie。如果会话的生存期为0,则它是一个会话Cookie(在浏览器关闭时被删除),在这种情况下,您可以在实施几天或一个月后将会话名称更改回PHPSESSID,因为您将确保没有人拥有旧Cookie


顺便说一句:浏览器没有发送两个cookie。这只是您的旧会话cookie仍然存在。

我遇到了同样的问题,并通过更改会话名称解决了它。这很有意义。我曾经这样做过一次,但我相信我仍然有一个条件,它决定了要与cookie一起使用的域。。。旨在允许应用程序使用不同的方法处理www/非www前缀。已将其备份,因此我应该有一个一致的域设置。请求头显示两个cookie都已发送。我不确定我是否了解你所做的区别。虽然更改会话名称(而不是重新创建重复cookie的根本原因)是最好的解决方案,但得出了相同的结论。你是对的。。浏览器将发送两个cookie。。我的意思是服务器在会话创建时只发送一个cookie。。。我把浏览器和服务器搞错了