如何将PHP会话数据从一个Apache虚拟主机传递到另一个?我目前正在运行Apache 2.2.17和PHP 5.3.3,并且我已经设置了一个主机来管理单个登录应用程序,我需要将其传递给另外两个运行单独应用程序的虚拟主机。这是我打算进一步发展的东西,但是现在传递会话数据将是最简单的。
目前,此代码在SSO子域auth.domain.com中创建第一个会话,然后将用户传递回应用程序界面app.domain.com(已被修剪):
$user = new User;
$user->set_user_session();
Header("Location: $redirectURL");
exit;
服务器完全由私有管理,因此多用户安全性不用担心。但是,如果有人发现任何安全问题,请告诉我。如果您知道更好的方法,请分享,我会进一步研究。我很感激帮助。
答案 0 :(得分:3)
据我所知,PHP会话不是(默认情况下)虚拟主机感知:您需要将会话ID作为重定向的一部分传递,然后将其设置在其他虚拟主机中。如下所示:
$sessionid = session_id();
Header("Location: $redirectURL?session=$sessionid");
exit;
然后在重定向的目标中:
session_id($_GET['session']);
session_start();
尝试一下,让我知道它是如何工作的。
答案 1 :(得分:0)
共享会话 如果您正在讨论子域(未指定),您可以将cookie域设置为仅域,以便会话ID作为cookie传递到它们之间
session_set_cookie_params(0, '', '.domain.com');
因此,my.domain.com
和your.domain.com
都会获得.domain.com
使用任一选项,您都可以使用共享数据库或redis存储进行共享会话管理。 (通过会话存储在服务器之间共享数据)
只要会话存储配置对所有VMS都相同。