我在访客的PC上设置了一个cookie,每24小时显示一次通知。最近我开始在错误日志中收到以下错误:
PHP: undefined index notice in **
我使用以下代码检查cookie是否存在值,如果没有显示通知:
if($_COOKIE['notice'] != 'yes')
echo 'notice';
}
我可以使用以下内容来避免PHP通知:
if((isset($_COOKIE['notice']) || !isset($_COOKIE['notice'])) && $_COOKIE['notice'] != 'yes')
有没有办法像我一样或以类似的方式一步完成检查?
由于
答案 0 :(得分:15)
源中的索引'notice'与错误消息中报告的索引'test'不匹配。为避免出现通知,请在读取变量或索引之前对其进行验证。以下是验证的两个功能。
是否正确检查变量/索引是否设置而不是NULL
if (isset($_COOKIE['notice']) && $_COOKIE['notice'] == 'yes') {
// success
echo 'Cookie equals "yes".';
}
你可以使用&& (和)对于第二个条件,也必须为真。
是否检查索引/变量不存在或者具有被视为空的值(NULL,0,'',array())。
if (empty($_COOKIE['notice']) || $_COOKIE['notice'] != 'yes') {
// error
echo 'Cookie does not exists, is empty or does not equal "yes".';
}
你可以使用|| (或)将其与需要为FALSE的其他条件相结合。
答案 1 :(得分:1)
在尝试查找内部的内容之前,您始终需要知道是否设置了变量,所以是..您需要进行检查。另外,你的逻辑是错误的......你正在检查notice
是否设置(总是如此)并检查notice
是否为“是”。
代码应该是这样的:
if ( (!isset($_COOKIE['notice'])) || ( (isset($_COOKIE['notice'])) && ($_COOKIE['notice'] != 'yes') ) ) {
//Show the notice
}