使用PHP / Nginx将cookie域从无域迁移到.mydomain.com

时间:2014-09-15 17:10:21

标签: php cookies nginx cross-domain

我有一个用PHP编写并在Nginx HTTP服务器上运行的网站。我有一个名为" locale"表示用户区域设置。 6个月,我发送这样的cookie:

setCookie("locale", "fr", time() + 36000, "/");

作为一个不含cookie的域名,我了解它仅适用于我的单一域名" www.mydomain.com"。

但是现在,我想创建2个新闻子域名:

  1. m.mydomain.com(移动部分)
  2. secure.mydomain.com(安全版)
  3. 我看到" locale" m或安全无法访问www上设置的cookie。所以现在我发送这样的cookie:

    setCookie("locale", "fr", time() + 36000, "/", ".mydomain.com");
    

    是的,我的饼干现在到处都有!但是由于我有一些用户已经浏览过我的网站,他们的域名少了cookie +新的,他们的浏览器给我发送了两个cookie,但PHP给了我前者。因此,任何人都无法更改语言环境。

    问题是:我如何从这个域少的cookie迁移到域指定的cookie?不更改cookie名称。

2 个答案:

答案 0 :(得分:0)

您在没有域名的情况下设置的第一个cookie默认为www.mydomain.com,因为这比“.mydomain.com”更具体,它选择的是原始cookie。在这里阅读接受的答案。

How to get the domain of a specific cookie?

答案 1 :(得分:0)

作为结论,我将在1周内将其放入index.php文件中:

setCookie('locale', null, time() - 5000, '/');

为了删除无域cookie。我已经在所有主流浏览器上进行了测试,但我没有发现任何冲突:

setCookie('locale', 'fr', time() + 36000, '/', '.mydomain.com');