2015-05-28 49 views
0

是否有直接的方法來測試當前請求期間是否設置了cookie?我正在寫現有代碼的擴展,所以我不能修改當前的代碼來添加類似$_COOKIE['something'] = $someValue;的東西。不幸的是,只有setcookie被調用,沒有以任何其他方式記錄事件。我需要知道客戶端收到標題之前,因爲如果現有的代碼尚未這樣做,我需要設置cookie。確定是否設置了cookie

+0

它讓我感到不應該試圖通過嘗試輪詢它的輸出歷史來確定你的執行線程以前做過什麼。 – symcbean

回答

0

您是否嘗試過使用isset

if(! isset($_COOKIE['something'])) { 
    $_COOKIE['something'] == $somevalue; 
} 
+0

Cookie在瀏覽器中不存在,所以它不在'$ _COOKIE'中。 – Zenexer

0

這是我現在的「蠻力」解決方案。不過,我希望能找到更好的方法。需要注意的是headers_list()獲取會頭被髮送到瀏覽器作爲響應的一部分,是被請求期間發送瀏覽器的標題。

foreach (headers_list() as $header) { 
    list($k, $v) = explode(': ', $header, 2); 

    if (strtolower($k) != 'set-cookie') { 
     continue; 
    } 

    $name = explode('=', $v, 2)[0]; 
    if ($name == $cookieName) { 
     return true; 
    } 
} 

return false; 
相關問題