if(!isset($_GET['set']) && (($_GET['set'] != 'on') || ($_GET['set'] != 'off'))){
header('Location: http://google.com');
exit;
}
我要检查的是 set 是否未设置且 value 未打开或关闭。这是正确的还是有其他方法?
if(!isset($_GET['set']) && (($_GET['set'] != 'on') || ($_GET['set'] != 'off'))){
header('Location: http://google.com');
exit;
}
我要检查的是 set 是否未设置且 value 未打开或关闭。这是正确的还是有其他方法?
不,你只需要这个:
if(!isset($_GET['set'])){
header('Location: http://google.com');
exit;
}
你交换了&&
和||
:
if (!isset($_GET['set']) || (($_GET['set'] != 'on') && ($_GET['set'] != 'off'))){
header('Location: http://google.com');
exit;
}
这些错误不容易发现。它可以帮助划分问题:
$isSet = isset($_GET['set']);
$isOn = $isSet && $_GET['set'] === 'on';
$isOff = $isSet && $_GET['set'] === 'off';
$isOnOff = $isOn || $isOff;
if (!$isOnOff) {
...
}
您无需再检查!isset()
。如果$_GET['set']
未设置,它将没有任何值。
if(!isset($_GET['set'])) {
header('Location: http://google.com');
exit;
}
我认为最好定义你的变量来避免Notice: Undefined variable:
,因为你仍然想确保 $_GET['set']
必须是on
or off
;
$_GET['set'] = isset($_GET['set']) ? $_GET['set'] : null ;
if(!($_GET['set'] == "on" || $_GET['set'] == "off")){
header('Location: http://google.com');
exit;
}
试试这个
if(!isset($_GET['set']))?header('Location: http://google.com'): exit;