2015-05-28 52 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; 
相关问题