为所有子域使用一个会话

时间:2012-07-11 00:02:56

标签: php session

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

我的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'] =&gt;'test .....'

没有任何改变,它正常工作

1 个答案:

答案 0 :(得分:2)

您当前的代码会尝试为www.example.com设置Cookie,而您甚至无法从www.example.com访问该网站!这就是它无法正常工作的原因。

您需要在整个域名中共享会话Cookie,如下所示:

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