2010-07-01 64 views
0

認爲這很容易,但我花了最後半個小時試圖找出它無濟於事。未在PHP中設置餅乾

$unique_id = uniqid(microtime(),1); 

if (is_null($_COOKIE['client_id'])) 
    { 
    setcookie("client_id", $unique_id); 
    } 

但是,當我去到$ _COOKIE檢查Cookie [ 'CLIENT_ID'],我得到一個空值。任何想法是怎麼回事?

+2

出於好奇的cookie,你檢查在同一個請求或一個不同的cookie值? – riwalk 2010-07-01 20:39:40

+0

同樣的要求,這是否重要? – JoeCortopassi 2010-07-01 20:43:29

+1

請參閱http://stackoverflow.com/questions/2444635/cant-set-cookies-in-php/2444671#2444671(和/或我編輯的答案)爲什麼它很重要。 – fbstj 2010-07-01 20:50:48

回答

3

_COOKIE數組是在腳本初始化時創建的,然後由PHP獨立完成。在腳本中設置cookie不會奇蹟般地將其添加到$ _COOKIE中。它只會顯示在下一個腳本請求上,或者您手動將其分配到$ _COOKIE中。

8

必須在輸出任何東西之前設置Cookie。我之前也有過許多Cookie問題。

此外,請參閱Can't set cookies in PHP?以解釋爲什麼您不能在設置它的同時檢查其存在。

1

是的FallingBullets有權利。在使用UTF8文件編碼時要擔心 - 首先發送給客戶端的字符是UTF8文件頭(0xFF 0xBB 0xBF)。在這種情況下,ob-start http://php.net/manual/en/function.ob-start.php不起作用(在ob-start之前發送UTF8文件頭)。

我描述的可能是Web服務器的特點。嘗試保存ascii編碼中的jour腳本。

2

你應該設定

$_COOKIE['key'] = 'value';