1

我一直在尝试使用 PHP 来验证我的表单。

该表单要求用户输入详细信息,一旦表单被验证,这些详细信息将被输入到数据库中的表中。

我在表单中有一个客户 ID 字段,我正在尝试验证它以确保它有一个值(必填字段),仅包含数字字符,长度正好为 6 位并且是唯一 ID(即不已经存在于数据库中)。

这是我到目前为止所拥有的:

<body>

<?php
$temp = "";
$msg = "";
$rst = "";

if (isset($_POST["submit"])) {  
$number = $_POST["custid"];

if(empty($number)) {
$msg = '<span class="error"> Please enter a value</span>';
} else if(!is_numeric($number)) {
$msg = '<span class="error"> Data entered was not numeric</span>';
} else if(strlen($number) != 6) {
$msg = '<span class="error"> The number entered was not 6 digits long</span>';
} else {
echo "valid";
}

}

?>

<h1>Customer Information Collection <br /></h1>

<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="custinfo" >
<table>
<tr>
    <td><label for="custid">Customer ID (integer value): </label></td>
    <td><input type="text" id="custid" name="custid" value="<?php echo   $temp ?>" size=11 /><?php echo $msg; ?></td>
</tr>

<tr>
    <td><label for="customerfname">Customer Frist Name: </label></td>
    <td><input type="text" id="customerfname" name="fname" size=50/></td>
</tr>
<tr>
    <td><label for="customerlname">Customer Last Name: </label></td>
    <td><input type="text" id="customerlname" name="lname" size=50/></td>
</tr>
<tr>
    <td><label for="customeraddress">Customer Address: </label></td>
    <td><input type="text" id="customeraddress" name="custaddress" size=65/></td>

    <td><label for="suburb"> Suburb: </label></td>
<td><input type="text" id="suburb" name="suburb"/></td>
</tr>
<tr>
<td>
State:<select name="state" id="state">
    <option value="select">--</option>
    <option value="ACT">ACT</option>
    <option value="NSW">NSW</option>
    <option value="NT">NT</option>
    <option value="QLD">QLD</option>
    <option value="SA">SA</option>
    <option value="TAS">TAS</option>
    <option value="VIC">VIC</option>
     <option value="WA">WA</option>
  </select>
</td>
<td><label for="postcode"> Post Code: </label><input type="text" id="postcode" name="postcode" size=4/></td>
</tr>
</table>
<p><input type="submit" name="submit" value="Save Data"/>&nbsp;<input type="reset" value="Clear Form" />
</tr>

</form>

</body> 

我遇到的问题是,当我故意在客户 ID 字段中输入不正确的值时,它不会给我任何错误。它只是处理不正确的值,就好像它们是正确的一样。

任何帮助都会非常棒!如果需要更多信息,请询问。

4

4 回答 4

11

这是您的简化验证,并使用正确的操作来检查 id 的长度。

if(empty($number)) {
    $msg = '<span class="error"> Please enter a value</span>';
} else if(!is_numeric($number)) {
    $msg = '<span class="error"> Data entered was not numeric</span>';
} else if(strlen($number) != 6) {
    $msg = '<span class="error"> The number entered was not 6 digits long</span>';
} else {
    /* Success */
}
于 2013-05-03T15:11:44.797 回答
0

在你的情况下,这正在发生。

1)检查空字符串

2)检查数字字符串,如果是数字则检查长度。

即使您的验证失败,例如如果您输入无效的详细信息,您的验证也会捕获错误并将其放入 $msg 变量中,但现在您没有使用该 $msg 变量,如果您回显该变量,您可以验证它是否正常工作或不是。

因此做

echo $msg; 

验证您的验证。

于 2013-05-03T15:16:25.393 回答
0
if (isset($_POST['add-contact'])) {

    $addPhone= $_POST['phone_no'];
    $addCell = $_POST['cell_no'];
    $addEmail= $_POST['email_address'];

    $addPhone = trim($addPhone);
    $addCell = trim($addCell);
    $addEmail = trim($addEmail);


    if (empty($addPhone) && empty($addCell) && empty($addEmail)) {
        message("danger","At least one field is required...");
    } elseif (strlen($addPhone) > 13) {
        message("danger","Phone No length is too large greater then 13...");
    } elseif (strlen($addCell) > 15) {
        message("danger","Cell No length is too large greater then 15...");
    } elseif (!is_numeric($addPhone)) {
        message("danger","Invalid phone no ,only numbers are allowed..");
    } elseif (!is_numeric($addCell)) {
        message("danger","Invalid cell no ,only numbers are allowed..");
    } else {
        $q = "insert into contact_tbl(phone_no,cell_no,email)values('$addPhone','$addCell','$addEmail')";
        mysql_query($q, $connect);
        message("info", "Contact details added successfully...");
    }
}
于 2015-07-07T05:58:34.210 回答
0

这是仅数字的完整解决方案,您还可以指定数字的长度

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
    $data = mysql_real_escape_string($data);
  return $data;
}  

if (is_numeric($_POST['emergency_num'])) {
          
      $emergency_num = test_input($_POST['emergency_num']);
        
       if(strlen($emergency_num) < 9){
              $errormsg = "Emergency Number can not be less than 9 digits Please Enter Correct number";
          }
      } else {
        $errormsg = 'Error: Please enter only numbers in Emergency Contact Number.';
        }
于 2020-12-17T10:31:07.727 回答