2013-05-03 116 views
1

我一直在尝试使用PHP来验证我的表单。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字段,它并没有给我任何错误。它只是处理不正确的值,就好像它们是正确的。

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

+0

这可以帮助你.. http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric – reikyoushin 2013-05-03 15:07:33

+0

@reikyoushin - 阅读问题 – Ryan 2013-05-03 15:08:30

+0

是不是我的,如果($号< 6 || $ number> 6){检查它是否有6位数的正确条件? – user2273149 2013-05-03 15:11:01

回答

10

这里是你的验证简化,并用正确的操作来检查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 */ 
} 
+0

你的答案似乎是正确的,但由于某种原因,当我故意输入不正确的值时,我的表单不会返回任何错误,它只是处理它。 – user2273149 2013-05-03 15:19:27

+0

正在显示$味精? – Ryan 2013-05-03 15:20:59

+0

哦哇对不起,我已经设置它回声$ tempmsg而不是$味精,但我现在已经改变了,它现在显示一个错误,但它只显示“请输入一个值”,只要我输入任何类型的值,包括正确的值。 – user2273149 2013-05-03 15:24:36

0

在你的情况发生这种情况。

1)检查空字符串

2)Cheking数字串,如果是数字,然后检查长度。

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

因此做

echo $msg; 

,以验证您的验证。

+0

我认为你可以通过放置代码示例来改进你的答案。 – 2018-01-15 19:47:22

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..."); 
    } 
}