使用php数组验证表单信息

使用php数组验证表单信息,php,Php,我不确定这个问题是否通过其他问题得到了全面的回答,但是 我正在为我的工作创建一个网页,其中包含多个输入字段(所有字段都具有相同的验证代码)。以下是我的php代码的一小部分: if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["bottomair"])) { $bottomairerror = "Maketable bottom air temp is required"; } else {

我不确定这个问题是否通过其他问题得到了全面的回答,但是

我正在为我的工作创建一个网页,其中包含多个输入字段(所有字段都具有相同的验证代码)。以下是我的php代码的一小部分:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["bottomair"])) {
    $bottomairerror = "Maketable bottom air temp is required";
    } else {
        $bottomair = test_input($_POST["bottomair"]);
        if (!filter_var($bottomair, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$coldmin, "max_range"=>$coldmax)))) {
            $bottomairerror = $errormsg;
        }
    }
    if (empty($_POST["topair"])) {
        $topairerror = "Maketable top air temp is required";
    } else {
        $topair = test_input($_POST["topair"]);
        if (!filter_var($topair, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$coldmin, "max_range"=>$coldmax)))) {
            $topairerror = $errormsg;
        }
    }
    if (empty($_POST["meat"])) {
        $meaterror = "Maketable meat temp is required";
    } else {
        $meat = test_input($_POST["meat"]);
        if (!filter_var($meat, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$coldmin, "max_range"=>$coldmax)))) {
            $meaterror = $errormsg;
        }
    }
    if (empty($_POST["cheese"])) {
        $cheeseerror = "Maketable cheese temp is required";
    } else {
        $cheese = test_input($_POST["cheese"]);
        if (!filter_var($cheese, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$coldmin, "max_range"=>$coldmax)))) {
            $cheeseerror = $errormsg;
        }
    }
    if (empty($_POST["walkin"])) {
        $walkinerror = "Walk-In temp is required";
    } else {
        $walkin = test_input($_POST["walkin"]);
        if (!filter_var($walkin, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$coldmin, "max_range"=>$coldmax)))) {
            $walkinerror = $errormsg;
        }
    }
    if (empty($_POST["refrig1"])) {
        $refrig1error = "Refrigerator #1 temp is required";
    } else {
        $refrig1 = test_input($_POST["refrig1"]);
        if (!filter_var($refrig1, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$coldmin, "max_range"=>$coldmax)))) {
            $refrig1error = $errormsg;
        }
    }
    if (empty($_POST["refrig2"])) {
        $refrig2error = "Refrigerator #2 temp is required";
    } else {
        $refrig2 = test_input($_POST["refrig2"]);
        if (!filter_var($refrig2, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$coldmin, "max_range"=>$coldmax)))) {
            $refrig2error = $errormsg;
        }
    }
    if (empty($_POST["refrig3"])) {
        $refrig3error = "Refrigerator #3 temp is required";
    } else {
        $refrig3 = test_input($_POST["refrig3"]);
        if (!filter_var($refrig3, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$coldmin, "max_range"=>$coldmax)))) {
            $refrig3error = $errormsg;
        }
    }
}

有没有一个函数我可以用来“整理”我的php代码,这样我就不会有那么多行代码需要调试了?

我想你只有三个选择:

  • 编写完美的代码,使您的代码永远不会偏离正轨(对于任何开发人员来说,这是极不可能的:)
  • 从if结构更改为
  • 改进调试过程/工具,使调试总体上不那么痛苦

  • 我想你只有三个选择:

  • 编写完美的代码,使您的代码永远不会偏离正轨(对于任何开发人员来说,这是极不可能的:)
  • 从if结构更改为
  • 改进调试过程/工具,使调试总体上不那么痛苦

  • 创建一个数组,其中所需字段的名称作为键,错误消息作为值。然后循环遍历这个数组。使用
    $\u POST
    superglobal中的键查看是否已设置。如果未设置,则抛出定义为值的错误消息。大致如下:

    $required_parameters = array(
        "bottomair"  => "Maketable bottom air temp is required",
        "topair"     => "Maketable top air temp is required",
        // etc
    );
    
    $errorslist = array();
    
    foreach($required_parameters as $key => $error)
    {
        if(empty($_POST[$key]))
        {
            $errorslist[] = $error; // append to list
        }
        else
        {
            $test = test_input($_POST[$key]);
            if (!filter_var($test, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$coldmin, "max_range"=>$coldmax)))) 
            {
                $errorslist[] = $errormsg; // <-- I don't know where you define errormsg, though
            }
        }
    }
    
    $required\u参数=数组(
    “底部空气”=>“需要可调底部空气温度”,
    “topair”=>“需要Maketable顶部空气温度”,
    //等
    );
    $errorslist=array();
    foreach($key=>$error所需的参数)
    {
    if(空($\u POST[$key]))
    {
    $errorslist[]=$error;//追加到列表
    }
    其他的
    {
    $test=test_输入($_POST[$key]);
    如果(!filter_var($test,filter_VALIDATE_INT,array(“选项”=>array(“最小范围”=>$coldmin,“最大范围”=>$coldmax)))
    {
    
    $errorslist[]=$errormsg;//创建一个数组,将所需字段的名称作为键,并将错误消息作为值。然后循环遍历此数组。使用
    $\u POST
    超全局中的键查看是否已设置。如果未设置,则抛出定义为值的错误消息。大致如下:

    $required_parameters = array(
        "bottomair"  => "Maketable bottom air temp is required",
        "topair"     => "Maketable top air temp is required",
        // etc
    );
    
    $errorslist = array();
    
    foreach($required_parameters as $key => $error)
    {
        if(empty($_POST[$key]))
        {
            $errorslist[] = $error; // append to list
        }
        else
        {
            $test = test_input($_POST[$key]);
            if (!filter_var($test, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$coldmin, "max_range"=>$coldmax)))) 
            {
                $errorslist[] = $errormsg; // <-- I don't know where you define errormsg, though
            }
        }
    }
    
    $required\u参数=数组(
    “底部空气”=>“需要可调底部空气温度”,
    “topair”=>“需要Maketable顶部空气温度”,
    //等
    );
    $errorslist=array();
    foreach($key=>$error所需的参数)
    {
    if(空($\u POST[$key]))
    {
    $errorslist[]=$error;//追加到列表
    }
    其他的
    {
    $test=test_输入($_POST[$key]);
    如果(!filter_var($test,filter_VALIDATE_INT,array(“选项”=>array(“最小范围”=>$coldmin,“最大范围”=>$coldmax)))
    {
    
    $errorslist[]=$errormsg;//谢谢你提供的这些信息,但是,我还是php的新手,如果我想使用开关结构,代码会是什么样子?谢谢你提供的这些信息,但是,我还是php的新手,如果我想使用开关结构,代码会是什么样子?谢谢你提供的这些信息,但是,我是sti如果我想使用切换结构,php的新功能是什么?非常感谢您的输入。但是,在我的页面中测试了这段代码后,我发现它的工作方式与其他代码的工作方式不同。我不知道这是由于错误的类型错误还是我没有填写一些可能的missing code,但是出于什么原因,此代码部分不起作用。我将继续尝试。非常感谢您的输入。但是,在我的页面中测试此代码后,我发现它与其他代码的工作方式不一样。我不知道这是否是由于错误的类型错误,或者我没有填写一些可能的错误le缺少代码,但出于任何原因,此代码部分无法工作。我将继续尝试。非常感谢您的输入。但是,在我的页面中测试此代码后,我发现它与其他代码的工作方式不一样。我不知道这是否是由于错误的类型错误或我没有填写某些代码可能缺少代码,但出于何种原因,此代码部分无法工作。我将继续尝试。