我如何测试是否使用php设置cookie,如果没有设置什么都不做

时间:2011-05-02 15:57:05

标签: php cookies

我试过

 $cookie = $_COOKIE['cookie'];

如果没有设置cookie,它会给我一个错误

PHP ERROR
Undefined index: cookie

我如何阻止它给我一个空变量>

5 个答案:

答案 0 :(得分:41)

使用isset查看Cookie是否存在。

if(isset($_COOKIE['cookie'])){
    $cookie = $_COOKIE['cookie'];
}
else{
    // Cookie is not set
}

答案 1 :(得分:15)

您可以将array_key_exists用于此目的,如下所示:

$cookie = array_key_exists('cookie', $_COOKIE) ? $_COOKIE['cookie'] : null;

答案 2 :(得分:6)

视您的需要而定。

// If not set, $cookie = NULL;
if (isset($_COOKIE['cookie'])) { $cookie = $_COOKIE['cookie']; }

// If not set, $cookie = '';
$cookie = (isset($_COOKIE['cookie'])) ? $_COOKIE['cookie'] : '';

// If not set, $cookie = false;
$cookie = (isset($_COOKIE['cookie'])) ? $_COOKIE['cookie'] : false;

参考文献:

答案 3 :(得分:4)

试试这个:

 $cookie = isset($_COOKIE['cookie'])?$_COOKIE['cookie']:'';
 //checks if there is a cookie, if not then an empty string

答案 4 :(得分:0)

响应中未提及的示例:假设条件合适,您将Cookie设置为60秒:

if ($some_condition == $met_condition) {
    setcookie('cookie', 'some_value', time()+ 60, "/","", false);
}

从技术上讲,我们需要检查它是否已设置并且未过期,否则将引发警告等。:

$cookie = ''; //or null if you prefer
if (array_key_exists('cookie', $_COOKIE) && isset($_COOKIE['cookie'])) {
    $cookie = $_COOKIE['cookie'];
}

您希望以一种确保未使用过期cookie并进行设置的方式进行检查,上面的示例显然不能总是设置cookie等。我们应该始终考虑这一点。 array_key_exists主要是为了防止警告显示在日志中,但如果没有警告,它将起作用。