同一服务器多站点子域名间 的session如何共享

小文blog小文 2016-09-06 10:54 1522人围观

情景再现

目前有两个站点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

<?php
session_start();
setcookie("session_id",session_id(),time()+3600,'/','.e.com');
$_SESSION['abc'] = '123';
echo $_SESSION['abc'];
echo 'gg';

mm.e.com

<?php
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

<?php
ini_set("session.cookie_domain", '.e.com');
session_start();
$_SESSION['abc'] = '123';
echo $_SESSION['abc'];
echo 'gg';

mm.e.com

<?php
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跨域,成功了再应用到相应的地方去。

转载请注明来自小文blog,本文标题:同一服务器多站点子域名间 的session如何共享

发布评论
生活是一场戏,主角当累了,你亦可成为观众,停下脚步,歇一歇