如何在php中验证整数

如何在php中验证整数,php,Php,**我正在使用php创建一个表单应用程序。此代码工作不正常。当学生ID为空时,我想显示一个错误需要学生ID。并且该值必须仅包含4位数字。不能输入字符串值和特殊字符。以上所有内容都应经过验证。如何解决这个问题。谁能帮我一下吗。谢谢** <!DOCTYPE html> <html> <head> <title> Enter Details </title> </head>

**我正在使用php创建一个表单应用程序。此代码工作不正常。当学生ID为空时,我想显示一个错误
需要学生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。。。