跨域的PHP共享会话

时间:2010-04-23 20:10:07

标签: php session .htaccess dns shared

我在SOF上看到了一些答案,但其中大多数都关注子域的使用,其中没有一个对我有用。常见的一个是session.cookie_domain的使用,根据我的理解,它只适用于子域。

我对处理完全不同域名的交易(包括子域名的可能性)感兴趣。不幸的是,项目截止日期就是它们,时间不在我身边,所以我转向SOF的专业知识和经验。

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

我希望找到一个“轻松”和“轻松”的解决方案。

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

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

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

我考虑过但尚未见过的第三个选项(也是首选)是使用htaccess来欺骗用户认为当inform apache重定向时他们在不同的域上;

之类的东西

www.foo.com/index.php?domain=bar.com&controller=news/categoires/1
但是以用户身份向用户显示 www.bar.com/news/categories/1

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

还有其他选择吗?优点/缺点?

提前致谢!!!

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  1. 定义主会话服务器(我与memcached结合使用)

  2. 使用Ajax / JSON(P)从此服务器请求会话,这允许您在多个域上共享会话

  3. 重复使用此会话

答案 2 :(得分:-3)

为了对任何对此功能感兴趣的人的利益,恐怕没有简单的答案。谷歌“单点登录”,它将返回技术和一些可用的解决方案。

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

我现在已经成功实施了一个系统来满足我的要求。

相关问题