2013-09-28 42 views
0

所以我有一個小網站,要求用戶使用用戶名和密碼登錄。當使用url studeez.net用戶登錄時,他或她將被重定向到一個頁面,頂部欄顯示他的名字,姓氏和註銷選項 一切正常,除了1個微小的問題example.com和www.example.com被視爲不同的會話

但是,如果我加www。在鏈接之前使其變爲www.studeez.net,用戶被給予登錄/註冊選項。

這是相當的問題,因爲當用戶試圖登錄時,他或她就得到了反饋,他們已經登錄。

我如何協調studeez.net和www.studeez.net以及因爲所有後續的網址如studeez.ney/path/to/page和www.studeez.ney/path/to/page

+0

這可能是由於Cookie僅針對非www域設置的。 – anubhava

+0

@anubhava我目前沒有使用任何cookies –

+0

好的,看下面的答案是否適合你。 – anubhava

回答

1

您需要強制wwwno-www將用戶會話保持在同一站點上。您可以使用此htaccess條件來重寫到正確的域。這個例子將強制使用www

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^yoursite.com [NC] 
RewriteRule ^(.*)$ http://www.yoursite.com/$1 [R=301,NC,L] 
</IfModule> 

可能重複this question

+0

謝謝,但這樣做對於後續的網址很有效,例如 studeez.net/path/to/page/和www.studeez.net/path/to/page/ –

+1

他的示例所做的工作是將域從「 example.com「設置爲」www.example.com「,並且所有的」/ path/to/page「內容都保持不變,所以基本上如果有人訪問'http:// example.com/some/page',被重定向到'http:// www.example.com/some/page'。 – txpeaceofficer09

+0

@JohnKariuki是的,就像txpeace所說的那樣。 – newpxsn

0

霸菱使用.htaccess文件或修改服務器配置,以使用mod_rewrite,這應該做工精細的純PHP解決方案:

$sname = session_name(); // Get the name of the session cookie. 
if (!isset($_SESSION)) session_start(); // If a session has not been started then start one. 
$sid = (isset($_COOKIE[$sname])) ? session_id($_COOKIE[$sname]) : session_id(); // Get an encrypted session identifier. 
setcookie($sname, $sid, time()+86400, "/", ".example.com", false, true); // Set the .example.com cookie so we can work across all sub-domains. 

更改.example.com的到任何你的域名是在。 domain.tld沒有子域的格式,但包括開始的時間段。這應該設置一個適用於您的域的所有子域的cookie。

相關問題