PHP读取另一个域上的cookie

PHP读取另一个域上的cookie,php,cookies,Php,Cookies,我有两个域名。一个域包含登录脚本。它在登录时创建一个cookie。另一个域具有URL缩短器 因此,在第二个具有URL Shortener脚本的域上,有一个名为session.php的文件。通常我使用$\u COOKIE['sessionid']获取会话id,并使用数据库进行匹配 现在如何获取会话id?我尝试了几种方法,但没有一种能解决我的问题。通过浏览器发送,并且仅发送到域,cookie被设置为 你无能为力 但是,如果您的域是两个不同的子域(例如,login.yourdomain.com和sho

我有两个域名。一个域包含登录脚本。它在登录时创建一个cookie。另一个域具有URL缩短器

因此,在第二个具有URL Shortener脚本的域上,有一个名为session.php的文件。通常我使用
$\u COOKIE['sessionid']
获取会话id,并使用数据库进行匹配

现在如何获取会话id?我尝试了几种方法,但没有一种能解决我的问题。

通过浏览器发送,并且仅发送到域,cookie被设置为

你无能为力

但是,如果您的域是两个不同的子域(例如,
login.yourdomain.com
shortener.yourdomain.com
),您只需相应地设置域名即可使cookie对所有子域有效。
在本例中,它将是
.yourdomain.com

您可能需要阅读的文档



如果你清楚地描述你想要完成的事情,也许会更好。可能还有另一种解决方案不涉及cookie。

出于明显的安全原因,您无法读取属于其他域的cookie。不过,您可以跨子域执行此操作


为什么不将会话id附加到转发的URL?

您无法从其他域读取cookie。
虽然传递会话id有几种方法。但您可以搜索
跨域授权


最简单的方法是通过查询字符串传递会话id,您不能这样做。Cookie绑定到单个域。您可以跨多个子域使用cookie。

您考虑过使用SSO实现吗


我们在工作中使用它,太棒了!这意味着我们不必担心这些类型的问题。

只需从登录页面设置cookie即可 将cookie设置为整个域,如下所示

setcookie("c","value",time()*3600*24,"/");

通过这种方式,您可以将cookie设置到整个域。

将其附加到URL是什么意思?@pnm123:作为查询字符串的一部分:
http://mysite.com/page.php?sid=A12638BCEF2733
是否需要在第二个应用程序中对照数据库检查会话id?仅仅检查存储在第一个应用程序cookie中的令牌(在成功登录时创建,在注销时销毁)是否存在还不够吗?没有任何方法可以将其回调。就像在第一个域中添加一个文件并从第二个域调用它一样?@pnm123:添加一个文件是什么意思?“不多”不是什么。;-)@Felix Kling:比如调用_cookie.php。事实上,我已经试过了。我的意思是在call\u COOKIE.php上使用$\u COOKIE['..'],并使用文件\u get\u contents()调用它,但它不起作用。@Felix Kling:我目前在我的网站上到处使用.domain.com cookies。你连接到CAS的用户数据库是什么?