二級域名跨域session共享, yii2[未測試]

在項目實施過程當中,每每把一個大項目進行分拆成幾個獨立的項目,項目用徹底獨立的域名和文件,能夠放到不一樣的服務器上的獨立分項目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值將會出現問題的!  

相關文章
相關標籤/搜索