認爲這很容易,但我花了最後半個小時試圖找出它無濟於事。未在PHP中設置餅乾
$unique_id = uniqid(microtime(),1);
if (is_null($_COOKIE['client_id']))
{
setcookie("client_id", $unique_id);
}
但是,當我去到$ _COOKIE檢查Cookie [ 'CLIENT_ID'],我得到一個空值。任何想法是怎麼回事?
認爲這很容易,但我花了最後半個小時試圖找出它無濟於事。未在PHP中設置餅乾
$unique_id = uniqid(microtime(),1);
if (is_null($_COOKIE['client_id']))
{
setcookie("client_id", $unique_id);
}
但是,當我去到$ _COOKIE檢查Cookie [ 'CLIENT_ID'],我得到一個空值。任何想法是怎麼回事?
_COOKIE數組是在腳本初始化時創建的,然後由PHP獨立完成。在腳本中設置cookie不會奇蹟般地將其添加到$ _COOKIE中。它只會顯示在下一個腳本請求上,或者您手動將其分配到$ _COOKIE中。
必須在輸出任何東西之前設置Cookie。我之前也有過許多Cookie問題。
此外,請參閱Can't set cookies in PHP?以解釋爲什麼您不能在設置它的同時檢查其存在。
是的FallingBullets有權利。在使用UTF8文件編碼時要擔心 - 首先發送給客戶端的字符是UTF8文件頭(0xFF 0xBB 0xBF)。在這種情況下,ob-start http://php.net/manual/en/function.ob-start.php不起作用(在ob-start之前發送UTF8文件頭)。
我描述的可能是Web服務器的特點。嘗試保存ascii編碼中的jour腳本。
你應該設定
$_COOKIE['key'] = 'value';
出於好奇的cookie,你檢查在同一個請求或一個不同的cookie值? – riwalk 2010-07-01 20:39:40
同樣的要求,這是否重要? – JoeCortopassi 2010-07-01 20:43:29
請參閱http://stackoverflow.com/questions/2444635/cant-set-cookies-in-php/2444671#2444671(和/或我編輯的答案)爲什麼它很重要。 – fbstj 2010-07-01 20:50:48