Php 如何在操作前验证用户输入

Php 如何在操作前验证用户输入,php,html,forms,post,Php,Html,Forms,Post,我对互联网语言非常陌生,我试图弄清楚如何在方法调用之前验证用户输入,但我只是还不能让它工作 <html> <head> </head> <body> <?php $grade = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $returned = test_input($_PO

我对互联网语言非常陌生,我试图弄清楚如何在方法调用之前验证用户输入,但我只是还不能让它工作

<html>
    <head>
    </head>
    <body>

        <?php
        $grade = "";
        if ($_SERVER["REQUEST_METHOD"] == "POST") 
        {
            $returned = test_input($_POST["grade"]);
            if(!$returned) ?
        }

        function test_input($data) 
        {
            if ( !is_numeric($data) || $data>100 || $data<0 )  
            {
                $data = "";
                echo 'The input should be a number between 0 and 100 ';
                echo "<br>";
                echo 'Try again';
                return false;
            }       
            return true;
        }
        ?>

        <form action = "file_1_2.php" method = "post">
        Grade: <input type="text" name="grade">
        </form>

    </body>
</html>

等级:

除我的评论和其他评论外,您的函数包含不正确的
if
子句,特别是您的大于、小于子句。我建议不要回显它的任何字符串,否则您的函数使用有限

function input_valid($data = false)
    {
        if(empty($data))
            return false;
        elseif($data && !is_numeric($data))
            return false;
        else
            return (($data <= 100) && ($data > 0));
    }

if(isset($_POST["grade"])) {
    if(input_valid($_POST["grade"])) {
        // Do stuff.
    }
    else {
        echo 'Invalid input. Must be a number between 1 and 100.';
    }
}
函数输入\u有效($data=false)
{
if(空($数据))
返回false;
elseif($data&&!是数字($data))
返回false;
其他的
返回($data 0));
}
如果(isset($_POST[“grade”])){
如果(输入有效($_POST[“grade”])){
//做事。
}
否则{
echo“无效输入。必须是介于1和100之间的数字”;
}
}

注意:我觉得重复上面的评论很重要,因为您不应该只依赖客户端验证。用户可以将其关闭,则您没有验证。客户端验证只应被视为“用户体验”功能,而不是“安全”功能。

您可以尝试使用jquery

    <form action = "file_1_2.php" method = "post">
    Grade: <input type="text" name="grade" class="grade" onkeyup="">
    </form>
    <script type='text/javascript' src="https://code.jquery.com/jquery-2.2.0.min.js"></script>

    <script>
        $(function(){
             $('input.grade').bind("keyup change", function(){

                validateGrade( $(this).val() );

             });
        });

        function validateGrade(g){
            if(g>100 || g<0){
                alert('The input should be a number between 0 and 100');
            }
        }
    </script>

等级:
$(函数(){
$('input.grade').bind(“键控更改”,函数(){
validateGrade($(this.val());
});
});
函数validateGrade(g){

如果(g>100 | | gYou可能应该将此
$data>0
更改为此
$data您希望执行什么类型的验证?您可以使用jquery进行验证。这非常简单。无论如何,您不应该依赖客户端验证。用户可以关闭它,然后您就没有验证了。您最好坚持使用服务器端验证,然后添加客户端验证-在时间允许的情况下,让你的函数只返回一个
bool
值,不要让它回显任何内容。这样你就可以在以后重用函数,而不会返回你不能更改的错误值。