网站首页 文章专栏 同一服务器多站点子域名间 的session如何共享
同一服务器多站点子域名间 的session如何共享
编辑时间:2019-08-01 10:16 作者:小铨 浏览量:73

情景再现

目前有两个站点mm.e.com和gg.e.com,我想在mm.e.com下可以访问到gg.e.com下的session。我的mm.e.com和gg.e.com是在同一服务器上的。

注意:如 mm.e.com 的服务器是不能读写 gg.e.com 服务器设置的 COOKIE 的。这里我们所说的同一网站的服务器有其特殊性,那就是他们同属于同一个一级域,如:mm.e.com 和 gg.e.com 都属于域 .e.com,那么我们就可以设置 COOKIE 的域为 .e.com,这样 gg.e.com 、mm.e.com 等等都可以访问此 COOKIE。

利用COOKIE存放session_id()

gg.e.com

1
2
3
4
5
6
session_start();
setcookie("session_id",session_id(),time()+3600,'/','.e.com');
$_SESSION['abc'] = '123';
echo $_SESSION['abc'];
echo 'gg';

mm.e.com

1
2
3
4
5
session_id($_COOKIE['session_id']);
session_start();
echo $_SESSION['abc'];
echo 'mm';

利用php.ini 的session.cookie_domain

备注:这里是用php代码实现不需要修改php.ini的配置文件;如果有需要你可以在php.ini里面修改配置文件(该情况下就不需要改段代码:ini_set("session.cookie_domain",'session.com');

gg.e.com

1
2
3
4
5
6
ini_set("session.cookie_domain"'.e.com');
session_start();
$_SESSION['abc'] = '123';
echo $_SESSION['abc'];
echo 'gg';

mm.e.com

1
2
3
4
5
ini_set("session.cookie_domain",'.e.com');
session_start();
echo $_SESSION['abc'];
echo 'mm';

注意

一、ini_set("session.cookie_domain",'.e.com');必须放在session_start()之前;否则将不会生效.

二、有时我们gg.e.com是mm.e.com下的某个目录,此时一定要注意,用来获取gg.e.com的session文件一定要在mm.e.com域名所指向的目录下。不能跳出这个目录.

建议

建议大家先写个demo进行测试session跨域,成功了再应用到相应的地方去。



    出自:铨程互动

    地址:www.wuhequan.cn

    转载请注明出处!


来说两句吧
最新评论
  • absolutely
    匿名用户 2019-11-30 01:07
    [爱你]
0.079680s