2

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

我的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.....'

没有任何变化,一切正常

4

1 回答 1

2

您当前的代码尝试为 www.example.com 设置 cookie,而您甚至没有从 www.example.com 访问该站点!这就是为什么它不起作用。

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

session_set_cookie_params(0, '/', '.example.com');
于 2012-07-11T00:09:41.737 回答