【发布时间】:2010-05-27 09:37:45
【问题描述】:
我有两个域。一个域包含登录脚本。它在登录时创建一个 cookie。另一个域有一个 URL 缩短器。
因此,在具有 URL Shortener 脚本的第二个域中,有一个名为 session.php 的文件。通常我使用$_COOKIE['sessionid'] 来获取会话ID并使用数据库进行匹配。
我现在如何获取会话 ID?我尝试了几种方法,但都没有解决我的问题。
【问题讨论】:
我有两个域。一个域包含登录脚本。它在登录时创建一个 cookie。另一个域有一个 URL 缩短器。
因此,在具有 URL Shortener 脚本的第二个域中,有一个名为 session.php 的文件。通常我使用$_COOKIE['sessionid'] 来获取会话ID并使用数据库进行匹配。
我现在如何获取会话 ID?我尝试了几种方法,但都没有解决我的问题。
【问题讨论】:
出于明显的安全原因,您无法读取属于另一个域的 cookie。不过,您可以跨子域执行此操作。
为什么不将会话 ID 附加到转发的 URL?
【讨论】:
http://mysite.com/page.php?sid=A12638BCEF2733
【讨论】:
Cookies 由浏览器发送,并且仅发送到设置 cookie 的域。
你能做的并不多(意思是什么都没有;))。
但是,如果您的域是两个不同的子域(例如 login.yourdomain.com 和 shortener.yourdomain.com),您只需相应地设置域名以使 cookie 对所有子域都有效。
在这种情况下,它将是.yourdomain.com。
您可能想阅读setcookie() 的文档。
如果你清楚地描述你想要完成的事情,也许会更好。可能还有另一种不涉及 cookie 的解决方案。
【讨论】:
就在从登录页面设置 cookie 时 像这样将cookie设置为整个域
setcookie("c","value",time()*3600*24,"/");
通过这种方式,您可以将 cookie 设置为您的整个域。
【讨论】:
您无法从其他域读取 cookie。
虽然有几种方法可以传递会话 ID。你可以搜索cross-domain authorization
最简单的方法是通过查询字符串传递会话 ID
【讨论】:
你不能。 Cookie 绑定到单个域。不过,您可以跨多个子域使用 cookie。
【讨论】: