2013-05-18 162 views
1

我正在使用會話變量來存儲登錄數據。在本地,一切工作順利,它很好地登錄並且不會註銷到頁面之間。PHP會話未設置

但是,當我把相同的文件放在服務器上,出於某種原因我退出了。我已經發現this後,用下面的代碼,以防止動態網頁的緩存嘗試:

header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 

雖然這似乎並沒有工作。有沒有其他可能的解決方案來解決這個問題?

編輯:請注意,session_start()是在每一頁上。

編輯2:我做了一些進一步的調查,看來我的一些鏈接鏈接到www.mysite.com當上了mysite.com。進入這個新頁面使得$_SESSION[]變量沒有被設置,並且當用返回按鈕返回到前一頁時,您可以看到$_SESSION[]仍然被設置。

+2

你是否開始在所有頁面上進行會話 –

+0

Go到問題的根源:調查請求/響應標題,同時在頁面中移動。如果會議正在消失,那麼你會在那裏看到它。 –

+0

@ManishJangir:會話在每一頁都啓動是的。 – jdepypere

回答

3

會話使用cookie,因此當您更改域名(www.site.com到site.com)時,這些cookie未被傳輸。

將您的網絡服務器設置爲具有一個規範網址,並將所有人重定向到該網址(例如,在site.com上進行標準化,將www.site.com重定向到site.com)。

這是我如何處理重定向Apache中:

ServerAlias www.site.com my.site.com site.net www.site.net sites.com www.sites.com site.com 
RewriteEngine On 
RewriteCond %{SERVER_NAME} !=site.com 
RewriteRule ^(.*) https://site.com/$1 [R=301] 

我喜歡site.com過www.site.com,除非你正在做的事情上,他們兩個讓不同的人鍵入四個額外的角色似乎毫無價值。我對SEO的理解是,你最好在兩個網址(site.com/stuff和www.site.com/stuff)上選擇一個內容而不是重複內容

+0

將www.mysite.com放在mysite.com上或以其他方式有什麼優勢?什麼是最簡單的方法來實現呢? – jdepypere