提问人:Aaron 提问时间:5/2/2011 更新时间:8/21/2022 访问量:60168
我将如何测试是否使用 php 设置了 cookie,如果未设置,则不执行任何操作
How would I test if a cookie is set using php and if it's not set do nothing
问:
我试过了
$cookie = $_COOKIE['cookie'];
如果未设置cookie,则会给我一个错误
PHP ERROR
Undefined index: cookie
我如何防止它给我一个空变量>
答:
6赞
Shoe
5/2/2011
#1
取决于您的需求。
// 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;
引用:
评论
1赞
Marc B
5/3/2011
你的第一个只是将它从未定义的数组索引更改为一个未定义的变量,你已经把 OP 放回原点。
0赞
Shoe
5/3/2011
@Marc B,没有。它只是设置或不设置。OP从未说过他会再次使用。$cookie
$cookie
1赞
Marc B
5/3/2011
是的,如果未设置,则它不会设置 ,所以现在您有一个未定义的数组字段和一个未定义的变量。如果 OP 之后尝试使用会怎样?$_COOKIE['cookie']
$cookie
$cookie
0赞
Shoe
5/3/2011
是的,你有它们,但只是用我的第一个解决方案尝试 OP 代码,就不会出现错误。他要求错误消失。:)
4赞
Naftali
5/2/2011
#2
试试这个:
$cookie = isset($_COOKIE['cookie'])?$_COOKIE['cookie']:'';
//checks if there is a cookie, if not then an empty string
19赞
John Parker
5/2/2011
#3
为此,您可以使用array_key_exists,如下所示:
$cookie = array_key_exists('cookie', $_COOKIE) ? $_COOKIE['cookie'] : null;
评论
12赞
John Parker
5/3/2011
耶!没有解释的匿名反对票 - 多么有帮助。:-)
0赞
Nereare
8/17/2016
通常的 isset() 方法的不错替代品!
0赞
Mike Q
1/22/2019
@JohnParker您不应该包括cookie是否也已设置,因为我多次假设重点是检查它是否未过期?
2赞
Hasenpriester
5/8/2020
@Mike isset() 也不会这样做。我认为当您知道数组(在本例中为 $_COOKIE)存在并且可以访问时,array_key_exists() 是一种更好的方法。
0赞
Giorgos Iordanidis
11/13/2020
如果 $_COOKIE['cookie'] 存在于 $_COOKIE 中并且为 NULL,则该函数返回 TRUE。除非你同意,否则不要使用它!检查“Example #2 array_key_exists() vs isset()”: php.net/manual/en/function.array-key-exists.php#example-5401
53赞
gen_Eric
5/3/2011
#4
使用 isset
查看 cookie 是否存在。
if(isset($_COOKIE['cookie'])){
$cookie = $_COOKIE['cookie'];
}
else{
// Cookie is not set
}
评论
1赞
Mike Q
1/22/2019
该代码段应促进编码标准,这在少数情况下会引发警告。
0赞
Mike Q
1/22/2019
#5
回复中未提及的示例:假设如果条件合适,您将 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主要是防止警告出现在日志中,但如果没有它,它就会起作用。
1赞
Favour okechukwu
8/21/2022
#6
这应该会有所帮助
$cookie = $_COOKIE['cookie']??'';
它是
if (isset($_COOKIE['cookie'])) {
$cookie =$_COOKIE['cookie']; //cookie is set
} else {
$cookie = ""; //cookie not set
}
然后你可以做
if(!empty($cookie)){
// do something
}
上一个:Java长号过大错误?
评论