在多个子域之间共享会话变量

2022-08-30 20:42:11

我有一个网站 www.example.com。这将具有多个子域,这些子域与单个应用程序或程序一起使用。例如,login.example.com 将允许用户登录到网站,而 system.example.com 将允许用户访问信息系统,而 forums.example.com 将允许用户访问论坛。

我们可能需要在子域之间传递信息,例如用户ID或用户首选项等。我们如何使用 SESSION 变量在 sudomain 之间传递信息?

编辑:我喜欢这个想法:

作为脚本中的第一件事:

ini_set('session.cookie_domain', '.example.com' ); 

答案 1

1)子域应使用相同的路径来保存会话文件

2) 修改您的

php.inisession.cookie_domain = ".example.com"

或 .htaccessphp_value session.cookie_domain .example.com

或在脚本内部ini_set('session.cookie_domain', '.example.com' );


答案 2

PHP 会话 ID 保存在 Cookie 中。要使 Cookie 在所有子域中可用,您需要将其分配给根域。然后,所有子域都将从 cookie 获取会话 ID,PHP 可以使用传递的会话 ID 找到会话。

事实证明,您只需要在文件中设置根域session.cookie_domainphp.ini

session.cookie_domain = ".example.com"

还要检查手册中用于设置 ini 条目的不同方法。


推荐