PHP如果status和!isset或!isset

时间:2013-04-02 21:25:01

标签: php

我正在尝试匹配一个条件,如果用户状态为10且 ANY 未设置POST变量,则会触发错误:

if ($_SESSION['status']=='10' && !isset($_POST['a']) || !isset($_POST['B'])) {}

我不能使用&&任何!isset作为一个变量的条件可以设置,但另一个可能不会。如果未设置一个或多个变量并且状态== 10。

,我只希望条件匹配

在测试$_POST变量!isset时,我会通过浏览器网络工具(例如Firebug)从页面中删除input元素。当提交表单时,变量缺失,仍然错误地传递验证。

我也在寻找PHP如果分组条件。

4 个答案:

答案 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']))){}