2012-01-17 165 views
0

我在設置Cookie時遇到問題。問題是我的cookies甚至沒有設置,我已經在下面設置了一個測試,看它們是否被設置,但是它們從未被設置。我甚至在我的瀏覽器中查看是否有任何設置,但沒有任何內容來自我的網站。PHP Cookie未設置

我想讓你幫我做餅乾。我不太確定該怎麼做。謝謝。

這裏是我的代碼:

<?php 
session_start(); 

setcookie("ridArray","", time()+3600); 

if (isset($_COOKIE['ridArray'])) { 
    echo "ridArray is set.";  
} 
?> 
<head> 
</head> 
<html> 
<body> 
<?php 
if (isset($_COOKIE['ridArray'])) { 
    echo "ridArray is set.";  
} else { echo "not set"; } 
?> 
</body> 
</html> 
+2

您是否嘗試過刷新頁面?在設置相同請求時,Cookie不會在'$ _COOKIE'中使用。 – deceze 2012-01-17 05:31:54

+4

您無法使用空值設置cookie。 檢查這個 http://stackoverflow.com/questions/8775572/setcookie-to-an-empty-value-not-working – WordsWorth 2012-01-17 05:32:54

+0

是的,我已經試過:/ – tushar747 2012-01-17 05:33:00

回答

4

這裏的問題,從SetCookie文檔:

Cookies必須具有相同的參數,因爲他們與設定被刪除。如果value參數是一個空字符串或FALSE,並且所有其他參數都與以前對setcookie的調用相匹配,則具有指定名稱的cookie將從遠程客戶端中刪除。這是通過將值設置爲「已刪除」並將過期時間設置爲過去一年來實現的。

您正在將cookie值設置爲空字符串(「」)。嘗試:

setcookie("ridArray","not blank value", time()+3600); 

的另一個問題是,當你設置一個cookie,它不會在請求頭(通過$ _COOKIE訪問),直到下一個頁面加載。這意味着當您第一次加載該頁面時,$ _COOKIE ['ridArray']不會被設置。在隨後的加載中,它將被設置,並且每次都會重置。

第一頁加載,它不會被設置。刷新,它將被設置。

調試cookie的最簡單方法是使用Chrome的開發人員工具或Firefox的FireBug,並觀察SetCookie標題的響應標題以及請求標題,以查看瀏覽器發送的cookie。

0
$myvar = "test"; 
if (!isset($_COOKIE['lng'])) { setcookie("lng",$myvar); $_COOKIE['lng'] = $myvar; }