确定是否设置了cookie


Determine whether a cookie was set

是否有一种直接的方法来测试当前请求期间是否设置了cookie ?我正在编写现有代码的扩展,所以我不能修改当前代码以添加$_COOKIE['something'] = $someValue;之类的东西。不幸的是,只调用setcookie,没有以任何其他方式记录事件。我需要在客户端接收报头之前知道,因为如果现有代码还没有这样做,我需要设置cookie。

你试过使用isset吗?

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

这是我目前的"蛮力"解决方案。不过我希望能找到更好的方法。请注意,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;