PHP表单数字验证
我一直在尝试使用PHP来验证我的表单 表单要求用户输入详细信息,一旦表单经过验证,这些信息将被输入到数据库的表中 我在表单中有一个客户ID字段,我正在尝试验证它,以确保它有一个值(强制字段),只包含数字字符,长度正好为6位,并且是唯一的ID(即数据库中不存在) 以下是我到目前为止的情况:PHP表单数字验证,php,forms,validation,numeric,Php,Forms,Validation,Numeric,我一直在尝试使用PHP来验证我的表单 表单要求用户输入详细信息,一旦表单经过验证,这些信息将被输入到数据库的表中 我在表单中有一个客户ID字段,我正在尝试验证它,以确保它有一个值(强制字段),只包含数字字符,长度正好为6位,并且是唯一的ID(即数据库中不存在) 以下是我到目前为止的情况: <body> <?php $temp = ""; $msg = ""; $rst = ""; if (isset($_POST["submit"])) { $number = $_PO
<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"/> <input type="reset" value="Clear Form" />
</tr>
</form>
</body>
客户信息收集
这里是您的验证简化,并使用正确的操作来检查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 */
}
if(空($number)){
$msg='请输入一个值';
}如果(!是数字($number)){
$msg='输入的数据不是数字';
}else if(strlen($number)!=6){
$msg='输入的数字不是6位数';
}否则{
/*成功*/
}
这里简化了验证,并使用正确的操作检查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 */
}
if(空($number)){
$msg='请输入一个值';
}如果(!是数字($number)){
$msg='输入的数据不是数字';
}else if(strlen($number)!=6){
$msg='输入的数字不是6位数';
}否则{
/*成功*/
}
在您的情况下,这种情况正在发生
1) 检查空字符串
2) 检查数字字符串,如果是数字,则检查长度
即使验证失败(例如,如果输入无效的详细信息),验证也会捕获错误
并将其放入$msg变量中,但现在您没有使用$msg变量,如果您回显该变量,则可以验证它是否正常工作
因此
echo $msg;
验证您的验证。在您的情况下,这种情况正在发生
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...");
}
}
1) 检查空字符串
2) 检查数字字符串,如果是数字,则检查长度
即使验证失败(例如,如果输入无效的详细信息),验证也会捕获错误
并将其放入$msg变量中,但现在您没有使用$msg变量,如果您回显该变量,则可以验证它是否正常工作
因此
echo $msg;
验证您的验证。这是只包含数字的完整解决方案,您还可以指定数字的长度
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...");
}
}
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.';
}
功能测试\u输入($data){
$data=修剪($data);
$data=条带斜杠($data);
$data=htmlspecialchars($data);
$data=mysql\u real\u escape\u字符串($data);
返回$data;
}
如果(是数字($\u POST['emergency\u num'])){
$emergency_num=测试输入($_POST['emergency_num']);
如果(strlen($emergency_num)<9){
$errormsg=“紧急号码不能少于9位,请输入正确号码”;
}
}否则{
$errormsg='错误:请仅在紧急联系人号码中输入号码';
}
这是只包含数字的完整解决方案,您还可以指定数字的长度
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.';
}
功能测试\u输入($data){
$data=修剪($data);
$data=条带斜杠($data);
$data=htmlspecialchars($data);
$data=mysql\u real\u escape\u字符串($data);
返回$data;
}
如果(是数字($\u POST['emergency\u num'])){
$emergency_num=测试输入($_POST['emergency_num']);
如果(strlen($emergency_num)<9){
$errormsg=“紧急号码不能少于9位,请输入正确号码”;
}
}否则{
$errormsg='错误:请仅在紧急联系人号码中输入号码';
}
这可以帮助您@reikyoushin-阅读问题不是我的if($number<6 | |$number>6){检查是否有6位数字的正确条件?不-应该是strlen-阅读我的回答使用数据库中的自动递增字段自己生成客户ID不是更容易吗?这可以帮助您..@reikyoushin-阅读问题不是我的if($number<6 | |$number>6){检查是否有6位数字的正确条件?不-应该是strlen-阅读我的回答使用数据库中的自动递增字段自己生成客户ID不是更容易吗?您的回答似乎是正确的,但出于某种原因,我的表单在故意输入错误值时没有返回任何错误,它只是处理我的错误t、 哦,哇,对不起,我把它设置为echo$tempmsg而不是$msg,但我现在已经改变了,它现在显示一个错误,但它只显示“请输入一个值”无论何时我输入任何类型的值,包括正确的值。哦,等等,我已经修复了它,这只是变量标签不正确的情况。谢谢你的帮助!你的答案似乎是正确的,但出于某种原因,我的表单在我有意输入错误值时没有返回任何错误,它只是处理它。哦,哇,对不起,我设置了它要回显$tempmsg而不是$msg,但我现在已经更改了,它现在显示一个错误,但它只显示“请输入一个值”无论何时我输入任何类型的值,包括正确的值。哦,等等,我已经修复了它,这只是变量标签不正确的情况。谢谢你的帮助!我认为你可以通过输入代码示例来改进你的答案。我想你可以通过输入代码示例来改进你的答案。