0
我有两个相同名称的cookie - 一个在我的根域,一个在子域上。默认情况下,如果您位于匹配的子域中,PHP将读取子域cookie并忽略根cookie。如果有一个匹配的子域cookie,我将如何阅读根域cookie?如何在当前子域名具有相同名称的cookie时访问根域上设置的cookie?
例如,可以说我有这两种饼干:
Name | Value | Domain
uid | 12345 | .example.com
uid | abcde | app.example.com
如果我在app.example.com,PHP将只显示我这个$_COOKIE
全局阵列中:
array("uid" => "abcde");
不过,我希望能够访问此:
array("uid" => "12345");
这可能吗?
我使用session_set_cookie_params这样的尝试:
session_set_cookie_params(0, "/", ".example.com");
session_start();
echo "<pre>"; print_r($_COOKIE["uid"]); echo "</pre>";
但它仍然会返回:
array("uid" => "abcde");
编辑:
的饼干被设定为以下代码:
setcookie("uid", "12345", 0, "/", "example.com");
setcookie("uid", "abcde", 0, "/", "app.example.com");
对于会话,http://stackoverflow.com/questions/644920/allow-php-sessions-to-carry-over-to-subdomains其他的cookie,你需要指定域像你正在做的,但使用setCookie方法。 –
据我所知,浏览器只发送其中一个cookie,所以PHP甚至不知道另一个。浏览器基本上检查是否没有具有相同名称的cookie。如果有的话,它会发送具有最适合该域的特定域值的域(比如app.example.com它“'app.example.com”'比'“.example.com”更具体反过来会比'“example.com”'更具体)' – Tularis
@JonathanKuhn - 指定域没有做任何事情......如果您在该子域中,它总是会显示来自子域的cookie。 –