2011-02-08 29 views
0

當我在url重寫後設置並獲取cookie時,我遇到了一個奇怪的錯誤。這是我使用重寫規則:

RewriteRule ^([A-Za-z0-9]+)/([A-Za-z0-9]+)$ /$1/$2/ [R] 
RewriteRule ^([A-Za-z0-9]+)/([A-Za-z0-9]+)/$ /index.php?destination=$1&command=$2 

這是我做的打印餅乾:

var_dump($_COOKIE); 

我也有一個登入,設置適當的餅乾,其到期註銷曲奇餅乾。

登錄:setcookie("USERNAME", "usernamestring", time()+3600);

註銷:setcookie("USERNAME", "0", time()-3600);

當我訪問www.remoteaccessnow.com,餅乾很空。 當我訪問www.remoteaccessnow.com/accounts/時,Cookie不爲空。

這是在同一會話期間完成的。該錯誤發生在Chrome 9,Firefox 3 +和IE8中。

如果我根本不使用重寫規則,那麼沒有任何問題,Cookie在整個「子網址」中都是一致的。我不知道是什麼導致了這個問題。看起來www.remoteaccessnow.com和www.remoteaccessnow.com/accounts/被「cookie處理器」視爲兩個不同的域名。

我在尋找關於如何保持cookie與我的域的所有子URL一致的建議。

回答

2

使用cookie的第四個參數到'/',以便它可以在域的所有目錄中訪問。

setcookie("USERNAME", "usernamestring", time()+3600,'/'); 

如果設置爲 '/',cookie將是整個域內 可用。如果 設置爲'/ foo /',那麼在/ foo/ 目錄中將只有 可用,而所有子目錄如 可用作域的/ foo/bar /。默認 值是 餅乾正在被設定的當前目錄。

詳情參見 http://php.net/manual/en/function.setcookie.php