2013-01-15 47 views
0

我爲我的表達式引擎項目使用會話。我已經使用以下方法在頁面頂部設置會話。表達式引擎上的PHP本機會話問題

if (session_id() == ''){ 
     session_start(); 
    } or 

    if(!isset($_SESSION)){ 
     session_start(); 
    } 

     or 

    if(empty($_SESSION['userid'])){ 
     session_start(); 
    } 

我寫了自定義表達式引擎插件,我在那裏做會話檢查。

過了一段時間,我觀察到一個奇怪的會話行爲。它針對不同的網址設置不同。對於http:// url,它設置不同,對於www:// url,它設置不同。 如何設置和檢索會話,以便http://example.com和www.example.com都能得到相同的結果。

我也跟着這個網址的步驟以及http://ellislab.com/forums/viewthread/231468/。我在http://ellislab.com/forums/viewthread/232604/上發佈了相同的問題。但它沒有幫助我。

有人可以幫助我做到這一點。

+1

'www://'url?有沒有www://協議... –

回答

0

感謝@mishu。在你解釋www是一個子域和一個session_cookie問題後,我做了一些實驗,然後搜索了一下。

這篇文章在stackoverflow是非常有幫助的。 PHP Sessions across sub domains

我開了expressionengine /笨的根目錄下的index.php文件,然後添加下面的線

ini_set('session.cookie_domain','.example.com'); 

現在,它的工作的罰款。如果有人能夠在這個主題上簡單地解釋,那麼對其他開發人員來說將會非常有用。

+0

http://stackoverflow.com/questions/4948340/how-to-pass-session-variable-to-a-page-in-the-parent-directory也是一個有用的帖子。 –

+0

不用客氣。這就是爲什麼我給出了該特定功能的鏈接,而不僅僅是建議你應該使用它。也許你正在使用的系統有一個推薦的包裝器,但該手冊頁的優點是可以理解這個想法(描述和其他資源的鏈接)。我很高興你解決了你的問題 – mishu

2

小記:www是一個子域,而不是一個協議。所以它的www.example.com,而不是www://example.com

這就是說:問題是事實,會話cookie(我猜你是使用會話cookie)無法識別不同的子域,所以你需要使它可在整個域

你可以檢查這個PHP函數了解更多詳情:http://php.net/session_set_cookie_params