在项目实施过程当中,每每把一个大项目进行分拆成几个独立的项目,项目用彻底独立的域名和文件,能够放到不一样的服务器上的独立分项目php
yii2就能够这样进行web
譬如 作一个电子商务系统, 服务器
1.产品,分类,首页使用域名 : www.domain.comyii2
2.帐户中文使用域名:account.domain.comcookie
3.购物车页面使用域名:cart.domain.comsession
4.下单页面使用域名:checkout.domain.comdom
分拆成4个域名子项目yii
这样就须要在二级域名之间进行session共享同步测试
在yii2中,本人测试过,能够经过设置网站
ini_set("session.cookie_domain","intosmile.es");
在两个项目的index.php添加cookie_domain,就能够进行session共享
两个彻底独立的yii2是可使用yii中的session读取的
注意配置
'request' => [
'class' => 'common\web\Request',
'enableCookieValidation' => true,
'enableCsrfValidation' => true,
'cookieValidationKey' => 'O1d232trde1x-M97_7QvwPo-5QGdkLMp#@#@',
'noCsrfRoutes' => [
'catalog/product/addreview',
'favorite/product/remark',
'paypal/ipn/index',
'paypal/ipn',
],
],
'cookieValidationKey' => 'O1d232trde1x-M97_7QvwPo-5QGdkLMp#@#@'
这句,这个cookie须要是同样的,固然这个,我没有测试,应该是须要同样的,若是session不能读取共享,就设置这里。这个是cookie生成的key。
这种好处是项目分拆,彻底独立,能够同步进行,不少电商网站都是采起这种方式进行项目的维护。
参考代码:
1.利用COOKIE存放session_id();
实例:
域名一文件php代码:
<?php
session_start();
setcookie("session_id",session_id(),time()+3600*24*365*10,"/",".session.com");
$_SESSION['user_name'] = '梁山良民';
echo $_SESSION['user_name'];
?>
域名二文件php代码:
<?php
session_destroy();
session_id($_COOKIE['session_id']);
session_start();
echo $_SESSION['user_name'];
?>
2.利用php.ini 的session.cookie_domain
备注:这里是用php代码实现不须要修改php.ini的配置文件;若是有须要你能够在php.ini里面修改配置文件(该状况下就不须要改段代码:ini_set("session.cookie_domain",'session.com');)
实例:
域名一文件php代码:
<?php
ini_set("session.cookie_domain",'session.com');//注:该参数必须在sesson_start()之上,不然将不会生效
session_start();
$_SESSION['user_name'] = '梁山良民';
echo $_SESSION['user_name'];
?>
域名二文件php代码:
<?php
ini_set("session.cookie_domain",'session.com');
session_start();
echo $_SESSION['user_name'];
?>
后期遇到问题须要特别说明哈,嘿嘿!
第一:ini_set("session.cookie_domain",'session.com');必须放在session_start()以前;
第 二:在某些网站测试的时候必须得注意,或许你本地没有问题,可是在其余机器上或者服务器上有问题,那么你须要检查 哈,ini_set("session.cookie_domain",'session.com');这个中的session.com中必须与你的域名 进行真实匹配!否则你的部分session值将会出现问题的!