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

Kev*_*imu 10 php subdomain session-variables

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

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

编辑:我喜欢这个想法:

作为脚本中的第一件事:

ini_set('session.cookie_domain', '.example.com' ); 
Run Code Online (Sandbox Code Playgroud)

Shi*_*dim 14

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

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

session.cookie_domain = ".example.com"
Run Code Online (Sandbox Code Playgroud)

另请参阅手册以了解用于设置ini条目的不同方法.

  • 在您的每个域的.htaccess文件中添加php_value session.cookie_domain .example.com。 (2认同)

Che*_*ery 11

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

2)修改你的

php.ini中 session.cookie_domain = ".example.com"

或.htaccess php_value session.cookie_domain .example.com

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


Kev*_*imu 9

我找到了解决问题的方法:

session_name("2620368ghwahw90w");
session_set_cookie_params(0, '/', '.mydomain.com');
session_start();
Run Code Online (Sandbox Code Playgroud)

这似乎没有问题.这是一种安全风险低的好方法吗?