Laravel PHP验证与Javascript验证

Laravel PHP验证与Javascript验证,javascript,php,validation,laravel-5,Javascript,Php,Validation,Laravel 5,我正在使用PHPLaravel在服务器端实现完整而详细的验证。建议使用客户端验证以获得更好的用户体验。我应该在前面走多远?我应该在客户端复制所有规则吗?还是只有HTML5基本表单验证就足够了 根据您的需求,您只能使用JS进行客户端验证。但在这种情况下,当用户禁用JS时,您的验证可能没有用处 $('body').on('submit', '#myform', function (e) { e.preventDefault(); v

我正在使用PHPLaravel在服务器端实现完整而详细的验证。建议使用客户端验证以获得更好的用户体验。我应该在前面走多远?我应该在客户端复制所有规则吗?还是只有HTML5基本表单验证就足够了

根据您的需求,您只能使用JS进行客户端验证。但在这种情况下,当用户禁用JS时,您的验证可能没有用处

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });

因此,我建议您将客户端验证和服务器端验证放在一起,以便在客户端验证因任何原因失败的情况下,服务器端将处理验证数据的任务。

根据您的要求,您只能使用JS进行客户端验证。但在这种情况下,当用户禁用JS时,您的验证可能没有用处

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });

因此,我建议您将客户端验证和服务器端验证放在一起,以便在客户端验证因任何原因失败的情况下,服务器端将处理验证数据的任务。

我为用户体验添加了Javascript验证。我总是添加后端验证,以便当用户关闭javascript或其他进程试图直接发布到后端时,验证在后端完成。

我为用户体验添加javascript验证。我总是添加后端验证,这样当用户关闭javascript或其他进程试图直接发布到后端时,验证会在后端完成。

客户端验证总是在浏览器上执行,并将防止您从浏览器提交无效数据-用户体验会变得更好,因为这需要时间验证时间很短,您可以同时使用JS或HTML5(在所有条件下都适用),但有时人们可以通过检查和编辑元素来删除所需的内容来提交数据

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
现在,服务器端验证也是强制性的,因为我们不应该允许无效数据

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });

最后,HTML5足以进行客户端验证

客户端验证始终在浏览器上执行,并将防止您从浏览器提交无效数据-用户体验变得更好,因为验证所需时间较短,您可以同时使用JS或HTML5(在所有条件下都适用),但有时,人们可以通过检查和编辑元素来删除所需的数据,从而提交数据

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
现在,服务器端验证也是强制性的,因为我们不应该允许无效数据

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });

最后,HTML5足以进行客户端验证

您可以在客户端使用服务器端验证:

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });

您可以在客户端使用服务器端验证:

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });

这完全取决于软件需求

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
服务器端验证

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
在Laravel验证中,用户提交的输入将被发送到服务器并进行验证。在服务器端完成验证过程后,通过新的动态生成的网页将反馈发送回客户端。最好在服务器端验证用户输入,因为您可以防止恶意用户,恶意用户可以轻松绕过客户端脚本语言,向服务器提交危险的输入

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
客户端验证

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
在客户端验证中,您可以通过在浏览器级别快速响应来提供更好的用户体验。执行客户端验证时,所有用户输入都将在用户浏览器中验证。客户端验证不需要往返到服务器,因此网络流量将帮助您的服务器更好地执行

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
例如,如果用户输入了无效的电子邮件格式,您可以在用户移动到下一个字段之前立即显示错误消息,以便用户在提交表单之前更正每个字段

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
javascript验证注意事项:-客户端验证主要依赖于javascript语言,因此如果用户关闭javascript,它很容易绕过并向服务器提交危险的输入。因此,客户端验证无法保护应用程序免受对服务器资源和数据库的恶意攻击

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
关于php laravel验证的注意事项:-服务器的必要流量和较慢的处理速度

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });

结论:-由于两种验证方法都有各自的意义,建议服务器端验证更安全

这完全取决于软件需求

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
服务器端验证

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
在Laravel验证中,用户提交的输入将被发送到服务器并进行验证。在服务器端完成验证过程后,通过新的动态生成的网页将反馈发送回客户端。最好在服务器端验证用户输入,因为您可以防止恶意用户,恶意用户可以轻松绕过客户端脚本语言,向服务器提交危险的输入

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
客户端验证

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
在客户端验证中,您可以通过在浏览器级别快速响应来提供更好的用户体验。执行客户端验证时,所有用户输入都将在用户浏览器中验证。客户端验证不需要往返到服务器,因此网络流量将帮助您的服务器更好地执行

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
例如,如果用户输入了无效的电子邮件格式,您可以在用户移动到下一个字段之前立即显示错误消息,以便用户在提交表单之前更正每个字段

          $('body').on('submit', '#myform', function (e) {
            e.preventDefault();
            var $form = $(this);        

             $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                success: function (data) {
                    //action
                },

                error: function(data){
                    $( "#myform input[type='text']" ).next().text( '' );
                    var errors = data.responseJSON;
                    $.each( errors, function( key, value ) {
                      $( "input[name='"+key+"']" ).next().text( value[0] );
                    });
                    }
            });

            return false;
            });
javascript验证注意事项:-客户端验证主要依赖于javascript语言,因此如果用户关闭javascript,它很容易绕过并向客户端提交危险的输入