前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二级域名跨域session共享, yii2[未测试] 转

二级域名跨域session共享, yii2[未测试] 转

作者头像
双面人
发布2019-05-21 23:35:32
1.9K0
发布2019-05-21 23:35:32
举报
文章被收录于专栏:热爱IT热爱IT热爱IT

为什么80%的码农都做不了架构师?>>>

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

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代码: <?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值将会出现问题的!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档