2012-02-23 17 views
-1

在一個文件中我有這樣的代碼來設置一些餅乾看是否在同一個文件中存在的cookie,因爲他們設定

setcookie("token", "value", time()+60*60*24*100, "/"); 
setcookie("secret", "value", time()+60*60*24*100, "/"); 
setcookie("key", "value", time()+60*60*24*100, "/"); 

我想知道我怎麼能檢查,如果這些小甜餅在同一個文件中設置,最好是在他們被設置之後。我已經試過這

if(!isset($_COOKIE['token']) || !isset($_COOKIE['secret']) || !isset($_COOKIE['key']){ 

//do something 

} 

,但它不工作..

+0

Cookie只在被髮送回瀏覽器時才被設置,並且只能在瀏覽器發出新請求時才能通過PHP進行測試......所以「不!它們不存在於設置它們的腳本中「 – 2012-02-23 15:10:02

+0

Dupe:http://stackoverflow.com/questions/9415282/php-cookie-isset – AndrewR 2012-02-23 15:11:41

+0

超級全局變量是在腳本啓動時設置的,然後PHP不會更改它們以反映您在腳本中所做的任何事情。 – 2012-02-23 15:21:41

回答

0

的$ _COOKIE設置當用戶已經有一個cookie,並要求新的一頁。

不能setCookie方法,然後使用$ _COOKIE後

+0

有沒有什麼辦法可以看到cookie是否設置好了呢? – Frank 2012-02-23 15:11:21

0

好,我們真的不應該跟你的問題打擾你沒有從以前的大約相同問題的問題採取任何意見,但這裏有雲:

選項A

// As you do setCookie, also set the value in $_COOKIE 
setCookie("foobar", "bat", time() + COOKIE_LIFETIME); 
$_COOKIE["foobar"] = "bat"; 

var_dump($_COOKIE["foobar"]); 

選項B

請勿使用$_COOKIE來存儲您的信息。已經分開變量$token,$secret$key,並從$_COOKIE加載這些值。如果$_COOKIE爲空,請手動初始化它們並致電setCookie

if (isset($_COOKIE["token"])) 
    $token = $_COOKIE["token"]; 
else 
{ 
    $token = "defaultValue"; 
    setCookie("token", $token, COOKIE_LIFETIME); 
} 
// Use $token instead of $_COOKIE["token"] from now on. 

選項C

如果用戶沒有設置Cookie,請setCookieheader()再次搬遷用戶在同一個站點。如果用戶不允許您設置cookie,請注意無限重定位。

if (!isset($_COOKIE["token"]) 
{ 
    setCookie("token", "defaultValue", COOKIE_LIFETIME); 
    header("Location: ".$_SERVER["REQUEST_URI"]); // insert reasonable URL here. 
    exit; 
} 

選項B將是首選。希望第三次不要看到這個問題。

如果用戶在將來的請求中發送cookie,則無法檢入相同的請求。 setCookie僅僅是一個吸引用戶瀏覽器請將此信息附加到未來的請求。你會知道它是否有效,如果cookie是在下一個請求中發送的。如果不遵循以下3種情況:a)用戶的瀏覽器不允許您設置cookie,b)用戶之前未訪問您的網站,c)之前設置的cookie已過期。

相關問題