Php 当当前子域具有同名cookie时,如何访问根域上的cookie集?

Php 当当前子域具有同名cookie时,如何访问根域上的cookie集?,php,http,cookies,Php,Http,Cookies,我有两个同名cookie集-一个在我的根域上,一个在子域上。默认情况下,如果您在匹配的子域上,PHP将读取子域cookie并忽略根cookie。当存在匹配的子域cookie时,如何读取根域cookie 例如,假设我有两个cookie: Name | Value | Domain uid | 12345 | .example.com uid | abcde | app.example.com 如果我在app.example.com上,PHP将仅在$\u COOKIE全局数组中显示: arra

我有两个同名cookie集-一个在我的根域上,一个在子域上。默认情况下,如果您在匹配的子域上,PHP将读取子域cookie并忽略根cookie。当存在匹配的子域cookie时,如何读取根域cookie

例如,假设我有两个cookie:

Name | Value | Domain
uid  | 12345 | .example.com
uid  | abcde | app.example.com
如果我在app.example.com上,PHP将仅在$\u COOKIE全局数组中显示:

array("uid" => "abcde");
但是,我希望能够访问以下内容:

array("uid" => "12345");
这可能吗

我尝试过使用session\u set\u cookie\u参数,如下所示:

session_set_cookie_params(0, "/", ".example.com");
session_start();
echo "<pre>"; print_r($_COOKIE["uid"]); echo "</pre>";
编辑:

正在使用以下代码设置cookie:


如果您在根域中创建了一个可供其他子域访问的cookie,而您没有将此cookie用于此子域,我建议您重命名子域的cookie。

对于会话,对于其他cookie,您只需像使用setcookie一样指定域。据我所知,浏览器只发送其中一个cookie,因此PHP甚至不知道另一个cookie。基本上,浏览器会检查是否存在同名的cookie。如果有,它将发送一个最具体的域值,适用于该域,因此在app.example.com上,it app.example.com比.example.com更具体,后者又比example更具体。com@JonathanKuhn-指定域没有任何作用。。。如果您在子域上,它将始终只显示子域中的cookie。主域上的cookie是否使用相同的方法设置?如果未正确设置,则无法从子域访问cookie。此外,您使用的会话\u set\u cookie \u参数只会影响会话cookie,但区域会查看$\u cookie['uid'],除非已重命名,否则它不是会话cookie。我刚刚添加了一些设置每个cookie的代码。关于会话内容,你是对的-我没有使用会话cookie,这使得该函数不相关。
array("uid" => "abcde");
setcookie("uid", "12345", 0, "/", "example.com");
setcookie("uid", "abcde", 0, "/", "app.example.com");