fecshop 关于 在index.php 设置 session.cookie_domain

技术分享 · Fecmall · 于 5年前 发布 · 1979 次阅读

在 @app/web/index.php 部分,在第二行可以看到

ini_set('session.cookie_domain', '.fancyecommerce.com'); //初始化域名,

这个的作用是开启session,让各个子域名可以共享session,这样appfront的各个store切换语言,虽然子域名变了,但是登陆信息和购物车信息的session还是在的

如果前台和后台都是同一个域名下的不同的子域名,那么,如果在appfront的index.php设置了子域名共享, 那么,appadmin/web/index.php 也需要设置,如果不设置,就会导致后台的cookie存在两个PHPSESSIONID

可以看到这两个 PHPSESSIONID的对应的domain是不同的,一个是 .fancyecommerce.com , 一个是 fecshop.appadmin.fancyecommerce.com, 会导致存储session,刷新页面后,无法取到保存的session

注意:如果你你的后台appadmin和前台的各个入口是不同的域名,那么不会存在这个问题,只有在同一个域名下的各个子域,当某个入口开启了session.cookie_domain, 才会出现这个问题,导致的后果就是设置了session后,在页面刷新后取不到session ,譬如后台切换多语言的时候会失效

因为fecshop的各个app的session存储的都是不同的redis库,因此不会出现session在各个入口冲突的问题。

总之,上面说的是,如果某一个入口(譬如appfront)设置了session.cookie_domain,那么各个子域(譬如appadmin,apphtml5都使用了和appfront入口 相同域名 下的 不同的子域名)对应的其他入口都需要设置, 否则,将会出现浏览器的session冲突。

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics