【问题标题】:Form validation using PHP使用 PHP 进行表单验证
【发布时间】:2013-02-16 21:41:31
【问题描述】:

我想验证我的表单,所以所有字段都是必需的。如果未插入字段或将其留空,则会在提交后显示错误消息。有人可以帮忙吗?

表格

<html>  
<head>  
<title>Form Input Data</title> 
</head>
<table>  
<body><table border="1">
<table bgcolor="lightblue"></body>

     <form method="post" action="insert_ac.php"> 
    <br>
<tr><td align="left"><strong>Nurse Information</strong></td></tr>
<tr>
<td><font color="red">Please select your name</font></td>
</tr>
<tr>
<td>Fullname</td>
<td><select name="valuelist">;
<option value="valuelist" name="nurse_name" value='<?php echo $nurse_name;  ?>'></option>
<?php
$value=$_POST ["valuelist"];
$con = mysql_connect("localhost","root","") or die('Could not connect:'.mysql_error());
mysql_select_db("a&e", $con) or die('Could not select database.');

$fetch_nurse_name = mysql_query("SELECT DISTINCT Fullname FROM nurse");

while($throw_nurse_name = mysql_fetch_array($fetch_nurse_name)) {
echo '<option   value=\"'.$throw_nurse_name[0].'">'.$throw_nurse_name[0].'</option>';
 }
 echo "</select>";

?>
</td>
</tr>
<tr>
<td>Please register name here:</td>
<tr>  

        <td>Fullname</td>

       <td><input type="text" name="nurse_forename" size="30"> </td>

     </tr>
 </tr>

【问题讨论】:

    标签: php validation required-field


    【解决方案1】:

    我会这样做:

    $req = ['field1', 'field2', 'field...'];
    $status = true;
    foreach ($req as $field) {
        if (empty($_POST[$field])) {
            echo 'Field ' . $field . ' is empty';
            $status = false;
        }
    }
    if ($status) {
        // ok
    } else {
        // not okay!
    }
    

    您创建一个数组 ($req),其中包含所有字段名称并循环遍历它们。对照empty()检查每个字段(查看该函数的php手册)。

    这里有一个更好(并且大部分)正确的 HTML sn-p... 请正确缩进并阅读任何 HTML 教程以获取格式正确的代码。您的 HTML 是 **。

    <?php
    
    $value=$_POST["valuelist"];
    $con = mysql_connect("localhost","root","") or die('Could not connect:'.mysql_error());
    mysql_select_db("a&e", $con) or die('Could not select database.');
    
    $fetch_nurse_name = mysql_query("SELECT DISTINCT Fullname FROM nurse");
    
    ?>
    <html>
    <head>
        <title>Form Input Data</title> 
    </head>
    <body>
    
        <form method="post" action="insert_ac.php"> 
    
        <table border="1" bgcolor="lightblue">
            <tr>
                <td align="left"><strong>Nurse Information</strong></td>
            </tr>
            <tr>
                <td><font color="red">Please select your name</font></td>
            </tr>
            <tr>
                <td>Fullname</td>
                <td>
                    <select name="valuelist">
                        <option value="valuelist" value="<?php echo $nurse_name;  ?>"></option>
                        <?php
    
                        while($throw_nurse_name = mysql_fetch_array($fetch_nurse_name)) {
                            echo '<option value="'.$throw_nurse_name[0].'">'.$throw_nurse_name[0].'</option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Please register name here:</td>
            </tr>
            <tr>  
                <td>Fullname</td>
                <td><input type="text" name="nurse_forename" size="30"> </td>
            </tr>
        </table>
        </form>
    </body>
    </html>
    

    如果您只有两个给定字段,则可以这样做:

    $status = false;
    $name = '';
    
    if (!empty($_POST['nurse_forename'])) {
        $name = $_POST['nurse_forename'];
        $status = true;
    
    } elseif (!empty($_POST['valuelist'])) {
        $name = $_POST['valuelist'];
        $status = true;
    
    } else {
    
        $status = false;
        // none of nurse_forname OR valuelist is filled
        // abort.
    }
    

    【讨论】:

    • 如果用户没有从数据库中选择一个名字(选择框留空)并且他们需要输入一个名字,这会起作用吗?
    • 不,这将检查所有元素($req)是否不为空。如果要检查valuelist OR nurse_forename 是否提交,则需要更改它。但是您的 HTML-Form 不是为此而设计的,您也需要更改它。
    • 请多解释一下这个表格应该做什么。如果您只有这两个表单字段,那么给定的解决方案就太复杂了。我只为两个字段添加了方式。
    【解决方案2】:

    类似

    foreach($_POST as $form_entry)
     if(empty($form_entry))
      echo 'you have to fill in all fields';
    

    【讨论】:

      【解决方案3】:
         if (isset($_POST['variable']{0})) {
         echo 'I exist and I have at least one char!';
         else
         echo 'I dont exist or I have no chars!';
      

      它检查$_POST['variable'] 是否存在并且至少有一个字符。

      【讨论】:

        【解决方案4】:

        if($_POST['valuelist'] == NULL or $_POST['nurse_forename'] == NULL){ die('empty'); }

        未经测试。

        【讨论】:

          【解决方案5】:

          试试这个方法:

          if(empty($_POST['nurse_forename'])){
          echo "Field Nurse-Forename is empty";
          }
          

          你也可以这样检查:

          if($_POST['nurse_forename']==""){
          echo "Nurse-Forename is empty";
          }
          

          您无法使用一个命令检查所有字段(因为您无法区分一个和多个空字段)。您可以使用 OOP 做得更优雅一些,但我认为对于您在示例上方发布的代码应该这样做。

          【讨论】:

          • 如果用户没有从数据库中选择一个名字(选择框留空)并且他们需要输入一个名字,这会起作用吗?
          • 是的,如果您分别检查每个字段,它将起作用。您将不得不与操作员一起玩耍并检查两个字段的发送方式。或者你给这两个字段赋予相同的名称。
          【解决方案6】:

          你也可以试试这个,它正在验证所有表单项。

          if (isset ( $_POST ['submit_button_name'] )) {
              $validated = true;
              array_walk_recursive ( $_POST, function ($value, $key) {
                  global $validated;
                  if (! trim ( $value ))
                      $validated = false;
              } );
              if ($validated) {
                  // insert function and redirect
              } else {
                  // print Your message
              }
          }
          // Your form 
          

          【讨论】:

            【解决方案7】:
            <!DOCTYPE HTML>
            <html>
            <head>
            <style>
            .error {color: #FF0000;}
            </style>
            </head>
            <body>
            
            <?php
            // define variables and set to empty values
            $nameErr = $emailErr = $genderErr = $websiteErr = "";
            $name = $email = $gender = $comment = $website = "";
            
            if ($_SERVER["REQUEST_METHOD"] == "POST")
            {
            
               if (empty($_POST["name"]))
                 {$nameErr = "Name is required";}
               else
                 {$name = test_input($_POST["name"]);}
            
               if (empty($_POST["email"]))
                 {$emailErr = "Email is required";}
               else
                 {$email = test_input($_POST["email"]);}
            
               if (empty($_POST["website"]))
                 {$website = "";}
               else
                 {$website = test_input($_POST["website"]);}
            
               if (empty($_POST["comment"]))
                 {$comment = "";}
               else
                 {$comment = test_input($_POST["comment"]);}
            
               if (empty($_POST["gender"]))
                 {$genderErr = "Gender is required";}
               else
                 {$gender = test_input($_POST["gender"]);}
            
            }
            
            function test_input($data)
            {
                 $data = trim($data);
                 $data = stripslashes($data);
                 $data = htmlspecialchars($data);
                 return $data;
            }
            ?>
            
            <h2>PHP Form Validation Example</h2>
            <p><span class="error">* required field.</span></p>
            <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
               Name: <input type="text" name="name">
               <span class="error">* <?php echo $nameErr;?></span>
               <br><br>
               E-mail: <input type="text" name="email">
               <span class="error">* <?php echo $emailErr;?></span>
               <br><br>
               Website: <input type="text" name="website">
               <span class="error"><?php echo $websiteErr;?></span>
               <br><br>
               Comment: <textarea name="comment" rows="5" cols="40"></textarea>
               <br><br>
               Gender:
               <input type="radio" name="gender" value="female">Female
               <input type="radio" name="gender" value="male">Male
               <span class="error">* <?php echo $genderErr;?></span>
               <br><br>
               <input type="submit" name="submit" value="Submit">
            </form>
            
            <?php
            echo "<h2>Your Input:</h2>";
            echo $name;
            echo "<br>";
            echo $email;
            echo "<br>";
            echo $website;
            echo "<br>";
            echo $comment;
            echo "<br>";
            echo $gender;
            ?>
            
            </body>
            </html>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-04-01
              • 2010-12-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多