检查其他网站上是否存在会话

时间:2012-08-12 14:27:20

标签: php ajax cross-domain

我有一个PHP项目,其中有多个子域(a.domainone.com,b.domainone.com,c.domainone.com)托管在另一台服务器上,另一个主域名domaintwo.com托管在另一台服务器上。

目标:用户只有在用户登录domaintwo.com域时才能访问第一个域的子域。

用户移动:用户访问a.domainone.com>要求用户点击立即输入> enter now有一个ajax函数来检查用户是否登录到domaintwo.com(响应为needlogin或logindone)>如果没有打开domaintwo的弹出窗口,在成功登录时会关闭回显:loggin successcesfull继续并立即进入

问题:登录后,当用户点击进入>相同的弹出窗口打开> echos登录已经完成(hav放置验证以检查会话是否已存在)>因此,当检查回显会话varible在a.subdomain.com上发现它的空白但是当直接在domaintwo.com登录处理程序的php页面上时,它正确地回应会话varibale的值。

所以我查了一下,ajax响应总是'needlogin'.... !!!

只是一个想法会欣赏。

谢谢&此致

修改

我已经完成了         < ? php header('Access-Control-Allow-Origin:*'); ? > 在domaintwo.com中,否则我甚至不会在ajax调用中收到if session的响应为'needLogin'。

2 个答案:

答案 0 :(得分:0)

如果您只是想知道发生了什么:您正在访问其他域中的数据,因此Web浏览器的跨域策略会启动。

您可以在维基百科上开始研究:

答案 1 :(得分:0)

您需要浏览器上的会话cookie中的session_id。幸运的是(不幸的是)客户端浏览器不允许从其他域访问cookie。由于您无法获取会话cookie,因此无法获取会话ID,因此无法跨域抓取会话。

如果两个站点都在同一台服务器上,并且您可以直接访问会话存储,并且您没有重新生成会话ID,那么您可能会做一些不好的事情,例如在一个站点上读取session_id并将其传递给get参数到下一个站点,然后根据id手动打开会话文件并读取它...