我试图匹配一个条件,如果用户状态是10和任何 POST变量没有设置它触发一个错误:
if ($_SESSION['status']=='10' && !isset($_POST['a']) || !isset($_POST['B'])) {}
我不能使用&&任何!isset
的条件都可以设置为一个变量,而另一个可能不设置。我只希望条件匹配,如果一个或多个变量没有设置和状态==10.
当测试$_POST
变量!isset
时,我通过浏览器web工具(例如Firebug)从页面中删除input
元素。当表单提交时缺少变量,它的仍然不正确地通过验证。
我也在寻找一个PHP如果分组条件。
如果您正在寻找绝对任何 PHP变量,我建议如下:
if (($_SESSION['status'] == 10) && (count($_POST) > 0)) {
您可以使用array_keys($_POST)
获取_POST var键的列表。
如果你正在寻找一个特定的:
if (($_SESSION['status'] == 10) && (isset($_POST['A']) || isset($_POST['b']))) {
括号的顺序很重要。
这就是你想要的吗?
$status = $_SESSION['status'];
if($status == '10'){
if(!isset($_POST['a']) or !isset($_POST['B'])){
//Triggers error.
}else{
//Another
}
}
试着把它变成一个函数:
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);
你可能正在寻找
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']))){}