在使用Jquery.validate.Js和ajax时,我还需要PHP验证吗?

时间:2017-12-26 06:13:22

标签: php jquery ajax validation

我知道js验证用于客户端,而php验证用于服务器端。 用户可以跳过js验证并提交,但是当我在ajax中获取动作php文件时是否可能?

我的意思是我使用以下代码来验证表单。如你所见,我在ajax中调用postProjectAction.php .. 如果用户跳过JS /禁用js并提交表单,则不会提交表单,因为

  1. 我的表单没有动作
  2. 如果未调用postProjectAction.php,则不会将表单数据插入或提交到数据库。当用户禁用js时,代码不会调用postProjectAction.php
  3. 所以没有机会提交表格。 这还不安全吗?

    HTML:

    <form id="form_validation" method="POST">
    </form>
    

    js验证:

    $(document).ready(function() {
    
        $("#form_validation").submit(function() {
                    if ($("#form_validation").valid()) {
                        var data1 = $('#form_validation').serialize();
                        $.ajax({
                            type: "POST",
                            url: "postProjectAction.php",
                            data: data1,
                            success: function(msg) {
                                console.log(msg);
                                $('.messagebox').hide();
                                $('#alert-message').html(msg);
                                $('.messagebox').slideDown('slow');
                            }
                        });
                    }
                    return false;
                });     
    });
    

3 个答案:

答案 0 :(得分:1)

好的PHP验证在服务器端,而JQuery在前端。

所以它基本上取决于需求或要求。

Bots可以打破前端验证,但有点难以破解服务器端验证。

最重要的是,进行服务器端验证会更加安全:)

答案 1 :(得分:1)

是的,你的表格仍然不安全。用户无需禁用JavaScript,甚至无需提交表单以绕过已实施的验证。

您的代码仅在提交表单时才进行验证。用户只需将以下代码粘贴到浏览器控制台并运行即可发布数据,而无需进行任何验证。

var data1 = $('#form_validation').serialize();
$.ajax({
        type: "POST",
        url: "postProjectAction.php",
        data: data1,
        success: function(msg) {
            console.log(msg);
            $('.messagebox').hide();
            $('#alert-message').html(msg);
            $('.messagebox').slideDown('slow');
        }
    });

这只是绕过表单验证的众多方法之一。验证来自客户端的所有数据始终是一种很好的做法。

答案 2 :(得分:0)

$(document).ready(function() {

    $("#form_validation").submit(function() {
                if ($("#form_validation").valid()) {
                    var data1 = $('#form_validation').serialize();
                    $.ajax({
                        type: "POST",
                        url: "postProjectAction.php",
                        data: {data1:data1},
                        success: function(msg) {
                            console.log(msg);
                            $('.messagebox').hide();
                            $('#alert-message').html(msg);
                            $('.messagebox').slideDown('slow');
                        }
                    });
                }
                return false;
            });     
});

编辑postProjectAction.php

if(!$_POST['data1'] OR !$_POST['blalbla']) header("HTTP/1.0 404 Not Found");
else{Your actions}