2015-04-06 165 views
0

我'嘗試設置在一個PHP文件cookie中(昨天它的工作,今天它不)Cookie的PHP沒有設置

我做的餅乾,現在我試圖刪除是將其設置爲一個空值。仍然cookie沒有被製作。

我已經刪除了我的瀏覽器中的cookies以及。

有人可以幫助我嗎?

setcookie("winkelwagen", "", '/'); 

    if(!isset($_COOKIE["winkelwagen"])) { 
     echo "<br>Cookie is not set!"; 
    } else { 
     echo "<br>Cookie '" . $_COOKIE["winkelwagen"] . "' is set!"; 
     echo "<br>Value is: " . $_COOKIE["winkelwagen"]; 

    } 

我收到「曲奇未設置」作爲輸出

+0

供參考:設置後,您不能在同一請求上訪問cookie。瀏覽器發送Cookie作爲HTTP請求頭的一部分。 Cookie作爲HTTP響應頭的一部分由服務器發送。所以你的HTTP請求將不會有你剛剛在響應中設置的cookie。 – ksg91 2015-04-06 07:37:37

+0

在頁面重新載入後,它還會顯示'cookie not set' – user3475797 2015-04-06 07:45:36

回答

1

你犯了一個錯誤,你沒有設置life time(這是third參數),但你設置有path '/',其中必須是fourth參數。此外,cookie不會設置爲空值。

docs

如果值參數爲空字符串,還是假的,和所有其他 參數匹配前面調用的setcookie,然後用 指定名稱的cookie將被從刪除遠程客戶端。

使用此:

setcookie("winkelwagen", "some_value",time() + (86400 * 30), '/') //for eaxmle 86400 = 1 day 
+0

當我這樣做時:setcookie(「winkelwagen」,「」);它也不起作用。所以只要名稱和值 – user3475797 2015-04-06 07:30:08

+0

嘗試在我的例子中,它會在重新加載頁面後設置。 – sergio 2015-04-06 07:33:28

+0

仍然沒有變化。 Cookie未設置 – user3475797 2015-04-06 07:34:42

2

這應該失敗/預期的行爲:

setcookie("winkelwagen", "", '/'); 

if(!isset($_COOKIE["winkelwagen"])) { 
    echo "<br>Cookie is not set!"; 
} 

按照manual(重點由我加的):

一旦餅乾已被設置,他們可以訪問下一頁 使用$ _COOKIE或$ HTTP_COOKIE_VARS數組加載

因此,當您設置cookie時,您的cookie將永遠不可用,它將在您加載的下一頁上提供。

+0

昨天我做了這個:setcookie(「winkelwagen」,「」);和輸出(回聲)都很好。它說cookie ...已經設定。 – user3475797 2015-04-06 07:32:45

+0

@ user3475797如果你之前已經加載過這個頁面,那將會是。可能以前的cookie在今天/昨天的某處過期。 – jeroen 2015-04-06 07:33:31

+0

事情是,即使我用另一個名稱制作了一個cookie,該cookie也沒有被創建 – user3475797 2015-04-06 07:35:39