2011-01-19 78 views
4

如果我使用以下基本代碼爲什麼我在PHP中使用cookie時會得到未定義的索引?

if (!defined('NAME_COOKIE')) 
define('NAME_COOKIE', "storedusername"); 

$cookie_domain = ".".$_SERVER['HTTP_HOST']; 

setcookie(NAME_COOKIE, $username,time() + (86400),"/", $cookie_domain); 
print $_COOKIE[NAME_COOKIE]; 

腳本與不確定的指數錯誤的打印過程中死亡。我究竟做錯了什麼?

+0

PHP是不知道死與未定義的索引**通知**(他們不是致命錯誤)... – BoltClock 2011-01-19 00:26:08

+0

取決於他是否有一些自定義錯誤處理BoltClock,他可以使用一個框架,設置爲嚴格。 – RobertPitt 2011-01-19 00:35:24

回答

22

你行:

setcookie(NAME_COOKIE, $username,time() + (86400),"/", $cookie_domain); 
print $_COOKIE[NAME_COOKIE]; 

請告訴我在這裏發生的是,你的Cookie設置,這意味着字符串是* 添加的頭,隨時與您的內容發送。

認爲這就像一個隊列,只有當您發送內容時隊列纔會進入瀏覽器。

由於您的cookie仍然在隊列中,所以直到頁面發送並且您重新調用頁面纔會設置它,然後在調用瀏覽器時會將Cookie信息發送回瀏覽器,瀏覽器會依次編譯$_COOKIE陣列。

嘗試認爲它是這樣的:

  • setcookie()函數;
    • (添加到隊列)
  • 嘗試$_COOKIE
    • (NOT FOUND)
  • 發送內容
    • (瀏覽器SETS的cookie文件)
  • 刷新
    • (瀏覽器發送COOKIE信息到服務器)
  • PHP編譯
    • ($ _COOKIE受壓FROM瀏覽器數據)
  • 嘗試$_COOKIE
    • (FOUND)

希望這會有所幫助。

相關問題