在Apache虚拟主机之间传输会话数据

如何将PHP会话数据从一个Apache虚拟主机传递到另一个虚拟主机? 我目前正在运行Apache 2.2.17和PHP 5.3.3,并且我已经设置了一台主机来pipe理一个单一的login应用程序,并且我需要将它传递给另外两台运行单独应用程序的虚拟主机。 这是我打算进一步发展,但现在传递会话数据将是最简单的。

目前,此代码在SSO子域auth.domain.com中创build第一个会话,然后将用户传回应用程序界面app.domain.com(已被修剪):

$user = new User; $user->set_user_session(); Header("Location: $redirectURL"); exit; 

服务器是完全私人pipe理的,所以多用户安全不是一个担心。 但是,如果有人看到任何安全问题,请让我知道。 如果你知道更好的方法,请分享,我会进一步研究。 我感谢帮助。

据我所知,PHP会话不(默认情况下)虚拟主机感知:您需要传递会话ID作为重定向的一部分,然后将其设置在另一个虚拟主机。 所以像这样:

 $sessionid = session_id(); Header("Location: $redirectURL?session=$sessionid"); exit; 

然后在重定向的目标中:

 session_id($_GET['session']); session_start(); 

试试看,让我知道它是如何工作的。

共享会话如果您正在讨论子域名(未指定),则可以将Cookie域设置为域名,以便将会话ID作为它们之间的cookie传递

session_set_cookie_params(0, '', '.domain.com');

所以, my.domain.comyour.domain.com都会得到my.domain.com的cookie

使用任一选项,您可以使用共享数据库或redis存储来共享会话管理。 (通过会话存储在服务器之间共享数据)

只要会话存储配置对于所有VMS都是相同的。