如何在php中验证整数
**我正在使用php创建一个表单应用程序。此代码工作不正常。当学生ID为空时,我想显示一个错误如何在php中验证整数,php,Php,**我正在使用php创建一个表单应用程序。此代码工作不正常。当学生ID为空时,我想显示一个错误需要学生ID。并且该值必须仅包含4位数字。不能输入字符串值和特殊字符。以上所有内容都应经过验证。如何解决这个问题。谁能帮我一下吗。谢谢** <!DOCTYPE html> <html> <head> <title> Enter Details </title> </head>
需要学生ID
。并且该值必须仅包含4位数字。不能输入字符串值和特殊字符。以上所有内容都应经过验证。如何解决这个问题。谁能帮我一下吗。谢谢**
<!DOCTYPE html>
<html>
<head>
<title> Enter Details </title>
</head>
<body>
<?php
$id = "";
$idErr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST"){
if (empty($id)){
$idErr = "Student ID is required";
}elseif(preg_match('/^\d+$/',$_GET['id'])){
$idErr = "Only numbers allowed";
}elseif(strlen($id) != 4) {
$idErr = "Please enter 4 numbers";
}
}
?>
<form action = <?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?> method = "post">
Student ID: <input placeholder="Student ID" type = "text" name= "id" value = ""/>
<span class="error">* <?php echo $idErr;?></span></br></br>
<input type = "submit" name = "submit" value = "Register"/>
</form>
</body>
</html>
输入详细信息
您定义了一个空变量,如果post提交,您将检查它是否为空。这将始终为真,因为此变量的值为空字符串。您应该尝试使用$\u POST
。您还应该将$\u GET['id']
更改为$\u POST['id']
:
<?php
$idErr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$id = $_POST['id'];
if (empty($id)){
$idErr = "Student ID is required";
} elseif(preg_match('/^\d+$/',$_POST['id'])) {
$idErr = "Only numbers allowed";
} elseif(strlen($id) != 4) {
$idErr = "Please enter 4 numbers";
}
}
?>
如果您尝试此操作,应该能够得到不同的结果。您定义了一个空变量,如果提交了帖子,您将检查它是否为空。这将始终为真,因为此变量的值为空字符串。您应该尝试使用
$\u POST
。您还应该将$\u GET['id']
更改为$\u POST['id']
:
<?php
$idErr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$id = $_POST['id'];
if (empty($id)){
$idErr = "Student ID is required";
} elseif(preg_match('/^\d+$/',$_POST['id'])) {
$idErr = "Only numbers allowed";
} elseif(strlen($id) != 4) {
$idErr = "Please enter 4 numbers";
}
}
?>
<?php
$id = "";
$idErr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$idVal = $_POST['id'];
if (empty($idVal)){
$idErr = "Student ID is required";
}elseif(!is_numeric($idVal)){
$idErr = "Only numbers allowed";
}elseif(strlen($idVal) != 4) {
$idErr = "Please enter 4 numbers";
}
}
?>
//it check like below
empty->number->exact 4 digit-> success.....
如果您尝试此操作,应该可以得到不同的结果。
<?php
$id = "";
$idErr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$idVal = $_POST['id'];
if (empty($idVal)){
$idErr = "Student ID is required";
}elseif(!is_numeric($idVal)){
$idErr = "Only numbers allowed";
}elseif(strlen($idVal) != 4) {
$idErr = "Please enter 4 numbers";
}
}
?>
//it check like below
empty->number->exact 4 digit-> success.....
//它检查如下
空->数字->精确的4位数->成功。。。。。
//它检查如下
空->数字->精确的4位数->成功。。。。。
ctype\u digit()
将验证整数值之类的字符串。但是你的代码在我看来很好?我想把它放在哪里?代替preg\u match('/^\d+$/',$\u GET['id'])
像ctype\u digit($\u GET['id'])==false
。您的preg_match
错误或应测试为false。此外,您的代码在验证过程中正在$id
和$\u GET['id']
之间切换…?ctype\u digit()
将验证整数值之类的字符串。但是你的代码在我看来很好?我想把它放在哪里?代替preg\u match('/^\d+$/',$\u GET['id'])
像ctype\u digit($\u GET['id'])==false
。您的preg_match
错误或应测试为false。此外,您的代码在验证期间在$id
和$\u GET['id]
之间切换…?他的preg匹配也出错,也值得在牙环中抛出isset($\u POST['id])
。这就是答案。你必须这样改变。因为,对于你的要求,elseif(!preg\u match('/^\d+$/',$\u POST['id'])
。他的preg\u match
也是错误的,也值得在那里扔一个isset($\u POST['id'])
。这就是答案。你必须这样改变。因为,对于你的要求,elseif(!preg_match('/^\d+$/',$POST['id'])
。使用是数字($idVal)
意味着12.5
是有效的学生id…使用是数字($idVal)
意味着12.5
是有效的学生id。。。