我正在尝试匹配一个条件,如果用户状态为10且 ANY 未设置POST变量,则会触发错误:
if ($_SESSION['status']=='10' && !isset($_POST['a']) || !isset($_POST['B'])) {}
我不能使用&&任何!isset
作为一个变量的条件可以设置,但另一个可能不会。如果未设置一个或多个变量并且状态== 10。
在测试$_POST
变量!isset
时,我会通过浏览器网络工具(例如Firebug)从页面中删除input
元素。当提交表单时,变量缺失,仍然错误地传递验证。
我也在寻找PHP如果分组条件。
答案 0 :(得分:0)
如果您正在寻找绝对任何 PHP变量,我建议您这样做:
if (($_SESSION['status'] == 10) && (count($_POST) > 0)) {
然后,您可以使用array_keys($_POST)
获取_POST var键列表。
如果您正在寻找特定的:
if (($_SESSION['status'] == 10) && (isset($_POST['A']) || isset($_POST['b']))) {
括号的顺序很重要。您可以使用括号分隔逻辑语句组。
答案 1 :(得分:0)
这是你想要的吗?
$status = $_SESSION['status'];
if($status == '10'){
if(!isset($_POST['a']) or !isset($_POST['B'])){
//Triggers error.
}else{
//Another
}
}
答案 2 :(得分:0)
尝试将其设为功能:
function checkAllVars($dataVars, $requestVars) {
foreach($dataVars as $varname) {
if(!isset($requestVars[$varname])) {
return false;
}
}
return true;
}
$dataVars = array (
"varName1",
"varName2",
"varName3",
"varName4",
);
$allVarsSet = checkAllVars($dataVars, $_REQUEST);
答案 3 :(得分:-1)
您可能正在寻找
if($_SESSION['status']=='10' && (!isset($_POST['a']) || !isset($_POST['B']))){}
^ ^
这意味着如果status = 10并且(如果没有设置'a'或未设置'B'或者它们都不能设置)执行某些操作
或者您可能正在寻找
if(($_SESSION['status']=='10' && !isset($_POST['a'])) || ($_SESSION['status']=='10' && !isset($_POST['B']))){}