对所有子域使用一个会话


use one session for all subdomains

我想对所有子域使用一个会话

我的php.ini

session.save_path = "/var/lib/php/session"
[root@bh /]# ls -la /var/lib/php/session
total 48
drwxrwxrwx 2 root   apache 4096 Jul 10 17:51 .
drwxr-xr-x 3 root   root   4096 Apr 28 11:22 ..
-rw------- 1 sub1 sub1 233 Jul 10 10:30 sess_1ct61gdtjmd2u2chom3eu4h8t4
-rw------- 1 sub1 sub1 233 Jul 10 10:33 sess_4etbc6bh4lqabeve35mr01fp35
-rw------- 1 sub1 sub1 233 Jul 10 10:40 sess_9h62k8h50tkfnf391ji0mj57m4

我的测试文件/home/sub1/public_html/test1.php

<?
session_set_cookie_params(0, '/', 'www.mydomain.com');
session_start();
$_SESSION['test']='test......';
print_r($_SESSION);
?>

我的第二个测试文件/home/sub2/public_html/test2.php

<?
session_set_cookie_params(0, '/', 'www.mydomain.com');
session_start();
$_SESSION['test_two']='test......';
print_r($_SESSION);
?>

现在我已经浏览了两个文件,

我应该得到这个结果

array(['test']=>'test......',['test_two']=>'test......')

但是,什么都没发生!!

如果我在sub1.domain.com上,我会得到这个结果['test']=>'test......'

如果我在sub2.domain.com上,我会得到这个结果['test_two']=>'test..'

什么都没有改变,它像正常的一样工作

您当前的代码试图为www.example.com设置cookie,但您甚至无法从www.example.com访问该网站!这就是为什么它不起作用。

您将希望在整个域名上共享您的会话cookie,如下所示:

session_set_cookie_params(0, '/', '.example.com');