我有一个用PHP编写的网站,运行在Nginx HTTP服务器上。我有一个名为"locale"的cookie,它表示用户的区域设置。6个月以来,我一直在发送这样的cookie:
setCookie("locale", "fr", time() + 36000, "/");
作为一个没有cookie的域,我知道它只在我的单个域"www.mydomain.com"上可用。
但现在,我想创建2个新闻子域:
- m.mydomain.com(移动部分)
- secure.mydomain.com(安全版本)
我看到在www上设置的"locale"cookie无法被m或安全访问。所以现在我发送的cookie是这样的:
setCookie("locale", "fr", time() + 36000, "/", ".mydomain.com");
是的,我的饼干现在到处都有!但由于我有一些用户已经浏览过我的网站,他们有无域cookie+新的cookie,他们的浏览器向我发送了两个cookie,但PHP给了我前一个。因此,没有人可以再更改区域设置。
问题是:如何从这个无域cookie迁移到指定域的cookie?不更改cookie名称。
您在没有域的情况下设置的第一个cookie默认为www.mydomain.com,因为它比".mydomain.com"更具体,所以它选择了原始cookie。请在此处阅读已接受的答案。
如何获取特定cookie的域?
作为结论,我将在一周内将其放在我的index.php文件中:
setCookie('locale', null, time() - 5000, '/');
为了删除无域cookie。我已经在所有主要浏览器上进行了测试,我看不出与有任何冲突
setCookie('locale', 'fr', time() + 36000, '/', '.mydomain.com');