二级域名跨域session共享, yii2

来源:互联网 发布:有闲置的淘宝店铺出租 编辑:程序博客网 时间:2024/05/11 04:05

在项目实施过程中,往往把一个大项目进行分拆成几个独立的项目,项目用完全独立的域名和文件,可以放到不同的服务器上的独立分项目

yii2就可以这样进行

譬如  做一个电子商务系统,

1.产品,分类,首页使用域名 : www.domain.com

2.账户中文使用域名:account.domain.com

3.购物车页面使用域名:cart.domain.com

4.下单页面使用域名:checkout.domain.com

分拆成4个域名子项目

这样就需要在二级域名之间进行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代码:
<?phpsession_start();setcookie("session_id",session_id(),time()+3600*24*365*10,"/",".session.com"); $_SESSION['user_name'] = '梁山良民';echo $_SESSION['user_name'];?>

域名二文件php代码:
<?phpsession_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代码:
<?phpini_set("session.cookie_domain",'session.com');//注:该参数必须在sesson_start()之上,否则将不会生效session_start();$_SESSION['user_name'] = '梁山良民';echo $_SESSION['user_name'];?>

域名二文件php代码:
<?phpini_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值将会出现问题的!


1 0
原创粉丝点击