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

时间:2016-01-18 18:44:21

标签: php html forms post

我是互联网语言的新手,我试图弄清楚如何在方法调用之前验证用户输入,但我还是无法使其工作。

<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>

2 个答案:

答案 0 :(得分:1)

除了我和其他评论,你的函数有不正确的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.';
    }
}

注意:我觉得重复上述评论非常重要,因为您不应仅仅依赖客户端验证。用户可以将其关闭,然后您无需验证。客户端验证应仅被视为用户体验&#34;功能,而非安全&#34;特征

答案 1 :(得分:1)

您可以尝试使用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>