2011-10-06 61 views
1

我在我的根目錄設置兩個cookie在PHP重複餅乾

setcookie ("st", "$todays_system_date" ); 
    setcookie ("en", "$tomorrow"); 

我的問題是,我需要在一個腳本,在更深的文件夾,例如重新設置:/日誌/ 當我設置它們,然後嘗試閱讀它們或查看餅乾套件時,我發現我有2x和2個餅乾。

我的問題是我如何才能引用一組cookie?並閱讀它們?

在此先感謝

+0

您是否還設置了「Cookie路徑」?對於「root」中的腳本,它應該是「/」,或者應該是「/ diary」的子文件夾。 –

回答

4

Cookies是鍵/值對 - 他們僅會在任何給定的範圍內的單個值。

然而:

  • 有可能具有與相同的域相同的密鑰和不同的值多個cookie(雖然會仍然只有在任一給定範圍有效一個值)。

例如,如果您設置cookie st根(/)值爲1,並且在/diary/與價值2,兩個cookie將在自己的權利存在。當您位於/目錄中(或者/的子目錄不是/diary//diary/的子目錄時),該值將爲1。當你在/diary//diary/子目錄如果將2

Directory   Cookie Value 
/     1 
/somedir/    1 
/diary/    2 
/diary/subdir   2 
/somedir/diary/  1 


  • 它可以在同一範圍內兩次設置相同的cookie,但只有後面的值將是有效 - 後面的值覆蓋較早的值。

例如:

setcookie('st',1); // st is now 1 for the current path 
setcookie('st',2); // st is now 2 for the current path 

如果你看一下由PHP發送你會看到2 Set-Cookie:頭爲重點st HTTP響應消息。但是,在Cookie範圍內的下一個請求中,只有後面的值2將被髮送回服務器。

+0

如果你用這篇文章替代我的「cookies可能有點奇怪」,你會明白_why_ cookies可能有點奇怪;)+1 – CD001

1

餅乾可以是一個有點奇怪 - 它應該工作,如果你設置多個參數...嘗試:

setcookie('st', "{$todays_system_date}", 0, '/', '.yourdomain.ext'); 
setcookie('en', "{$tomorrow}", 0, '/', '.yourdomain.ext'); 

這可能是隨後的餅乾被設置爲導致重複的不同路徑或域。

n.b.如果您使用'.yourdomain.ext'(請注意,在您的域名之前),您的網站上的所有子域名都可以訪問該Cookie,例如www.yourdomain.extbadger.yourdomain.ext等等。

欲瞭解更多信息,請參閱:http://uk3.php.net/manual/en/function.setcookie.php