【问题标题】:$_COOKIE['cookiefoo'], try to get a cookie$_COOKIE['cookiefoo'],尝试获取 cookie
【发布时间】:2010-05-25 14:16:43
【问题描述】:

我是 webapps 和 PHP 的新手。

我正在尝试获取尚未创建的 cookie,我的意思是,当我尝试加载寻找不存在的 cookie 的页面时出现错误,我尝试尝试摆脱它/catch 但不成功。这是我正在尝试的代码:

try{

    $cookie =  $_COOKIE['cookiefoo'];

    if($cookie){

          //many stuffs here
    }
    else
        throw new Exception("there is not a cookie"); 
}
catch(Exception $e){

}

我怎样才能做到这一点,任何想法,将不胜感激。

【问题讨论】:

    标签: php cookies web-applications


    【解决方案1】:

    如果密钥不存在,请使用isset 防止发生任何警告或通知:

    if(isset($_COOKIE['cookiefoo']) && !empty($_COOKIE['cookiefoo'])) {
        // exists, has a value
        $cookie =  $_COOKIE['cookiefoo'];
    }
    

    array_key_exists 也可以这样做,虽然我认为isset 更简洁:

    if(array_key_exists('cookiefoo', $_COOKIE) && !empty($_COOKIE['cookiefoo'])) {
        // exists, has a value
        $cookie =  $_COOKIE['cookiefoo'];
    }
    

    【讨论】:

    • 如果你寻找非空值,条件如: if (!empty($_COOKIE['cookiefoo'])) 就足够了,不需要 isset。
    • 无论哪种方式,isset 或 empty 都可以。我总是使用 isset()
    • +1 表示 isset,!empty 将为整数 0、空数组和空字符串等值返回 false。 Isset 只会为 null 和未设置的变量返回 false。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2013-02-26
    • 2022-01-08
    • 1970-01-01
    • 2014-02-24
    • 2016-08-22
    相关资源
    最近更新 更多