如何将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.com
和your.domain.com
都会得到my.domain.com
的cookie
使用任一选项,您可以使用共享数据库或redis存储来共享会话管理。 (通过会话存储在服务器之间共享数据)
只要会话存储配置对于所有VMS都是相同的。