【问题标题】:Validation not working in PHP on submission the form data by click the submit button通过单击提交按钮提交表单数据时验证在 PHP 中不起作用
【发布时间】:2019-06-06 08:43:04
【问题描述】:

通过单击提交按钮提交表单数据时验证在 php 中不起作用。

<?php    
    if (isset($_POST['validate'])) {
            if (empty($_POST['ename'])){
                $nameErr = "name is required";
            }
            else{
                $name = test_input($_POST['ename']);
                 if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
              $nameErr = "Only letters and white space allowed"; 
            }
                }
            if (empty($_POST['mail'])){
                $emailErr = "email is required";
                }
            else{
                $email = test_input($_POST['mail']);
            }
            if (empty($_POST['gender'])){
                $genderErr = "gender is required";
            }
            else{
                $gender = test_input($_POST['gender']);
            }

我想停止空插入

            $query = "insert into inserttb (name,email,gender) values ('$name','$email','$gender')";
            $result = mysqli_query($conn,$query);
            if(!$result){
            echo "data insertion failed";
            }
            }
            //function to validate the input data
            function test_input($data) {
              $data = trim($data);
              $data = stripslashes($data);
              $data = htmlspecialchars($data);
              return $data;
            }
        ?>

【问题讨论】:

  • 在查询之前检查是否设置了$nameErr$emailErr$genderErr,只有在没有设置时才插入。

标签: php mysql forms validation insertion


【解决方案1】:

这个呢? (添加了 var $someErrorFound)

     if (isset($_POST['validate'])) {
            if (empty($_POST['ename'])){
                $nameErr = "name is required";
                $someErrorFound=true;
            }
            else{
                $name = test_input($_POST['ename']);
                 if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
              $nameErr = "Only letters and white space allowed"; 
                $someErrorFound=true;
            }
                }
            if (empty($_POST['mail'])){
                $emailErr = "email is required";
                $someErrorFound=true;
                }
            else{
                $email = test_input($_POST['mail']);
                $someErrorFound=true;
            }
            if (empty($_POST['gender'])){
                $genderErr = "gender is required";
                $someErrorFound=true;
            }
            else{
                $gender = test_input($_POST['gender']);
                $someErrorFound=true;
            }

   if ($someErrorFound==false)
    {
      //insert into DB
    } else //don't insert

【讨论】:

  • 当然。当然,您可以整理代码或扩展功能,以便每次检查使用一个返回变量,例如$emaliEmpty, $emailNotValid, 你可以用它们制作数组 $checks['emial']=true, $checks['gender']=true...这取决于您最终对这些检查做什么...基本上这正是@kerbholz 在第一条评论中的建议。
猜你喜欢
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 1970-01-01
相关资源
最近更新 更多