PHP跨域共享会话

PHP跨域共享会话,php,session,.htaccess,dns,shared,Php,Session,.htaccess,Dns,Shared,我在SOF上看到了一些答案,但大多数都与子域的使用有关,其中没有一个对我有用。最常见的是使用session.cookie\u domain,据我所知,它只适用于子域 我对处理完全不同的域(包括子域的可能性)的解决方案感兴趣。不幸的是,项目的最后期限就是这样,时间不在我这边,所以我求助于SOF的专业知识和经验 当前的项目简介是能够登录到一个站点,该站点当前只存储会话中的用户id,然后能够在同一服务器环境中的不同域上检索该值。正在从数据库中存储/检索会话数据,会话id是主键 我希望找到一个“轻巧”和

我在SOF上看到了一些答案,但大多数都与子域的使用有关,其中没有一个对我有用。最常见的是使用
session.cookie\u domain
,据我所知,它只适用于子域

我对处理完全不同的域(包括子域的可能性)的解决方案感兴趣。不幸的是,项目的最后期限就是这样,时间不在我这边,所以我求助于SOF的专业知识和经验

当前的项目简介是能够登录到一个站点,该站点当前只存储会话中的
用户id
,然后能够在同一服务器环境中的不同域上检索该值。正在从数据库中存储/检索会话数据,
会话id
是主键

我希望找到一个“轻巧”和“容易”实现的解决方案

系统使用内部模型-视图-控制器设计模式,因此所有请求(包括不同域)都通过单个引导脚本运行。使用域名作为变量,这将确定要向用户显示的上下文

一个看起来很有潜力的选项是使用隐藏图像并使用alt标记设置
用户id
。我的第一印象表明,这似乎立即“太容易了”(如果可能的话),并且充满了安全漏洞。讨论

我考虑的另一个选项是使用IP和用户代理进行身份验证,但由于共享网络和更改IP地址,我再次觉得这不是一个可靠的选项

我的第三个选择(也是我的首选)是使用
htaccess
来欺骗用户,让他们在infact apache重定向时认为自己在不同的域上;差不多

www.foo.com/index.php?domain=bar.com&controller=news/categoires/1

但向用户显示为
www.bar.com/news/categories/1

foo.com
表示“主站点域”,所有请求都通过该域运行,
bar.com
表示用户认为他们正在访问的域。控制器请求指示所请求的页面和视图。这可能吗

还有其他选择吗?赞成/反对


提前感谢

您是否考虑过使用。您可以将会话存储在数据库中,并从任何域访问它们。

对于其他对该功能感兴趣的人来说,恐怕没有简单的答案。谷歌“单点登录”,它将回来的技术和一些解决方案Aviable

至于使用htaccess隐藏域名,这是不可能的,因为它可能被用于恶意活动

我现在已经成功地实现了一个系统来满足我的需求

  • 定义一个主会话服务器(我与memcached结合使用)

  • 使用Ajax/JSON(p)从该服务器请求会话,这允许您在多个域上共享会话

  • 重用此会话


  • 抱歉,忘了提及,我目前正在本地运行系统(使用XAMPP)。我混合使用本地域名(编辑的主机文件)和fasthost托管的域转发到我的IP。值得一提的是,这会影响我目前的测试。我正在使用这个。问题是PHP生成的会话id对于每个域都是不同的。您不能通过会话id识别用户吗?在表中使用其他列。每个用户都有多行,但可以将一行设置为相同的值。我以前从来没有这样做过,只是把东西扔出去。foo.com给出的会话id是ABC123,bar.com给出的会话id是QWERTY。除非我比较IP/UserAgent,否则(据我所知)无法知道ABC123和QWERTY指向同一个用户。检索会话数据的数据库查询是SELECT*FROM sessions,其中session_id=“%string”。还是我错过了你的观点?这不是答案。你不告诉我们你做了什么。