PHP if status and !isset or !isset

  • 本文关键字:isset or and if status PHP php
  • 更新时间 :
  • 英文 :


我试图匹配一个条件,如果用户状态是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']))){}

最新更新