Laravel 4 - 防止表单提交多个条目

时间:2014-08-19 12:30:23

标签: php forms laravel submit

我在提交带有POST请求的表单时遇到问题,如果我"垃圾邮件" (在页面重定向之前,我可以多次单击“提交”按钮)每次按下按钮时,它都会创建一个请求的提交按钮。它为什么这样做?是因为CSRF令牌没有重生吗?是因为我在localhost上运行,我真的不知道到底发生了什么,我开始失去它。

所以发生的事情是,每次点击表单上的提交按钮,都会插入许多重复数据条目。

我已经搜索过,在Stack上发现了另一篇与我有同样问题的帖子。

Prevent creating multiple entries with Laravel 4

但答案并不能让我满意..必须有更好的方法来解决这个问题并适用于所有的帖子请求。

修改的 这是指向我的控制器的链接,其中包含beforeFilter,我的资源控制器和视图。

3 个答案:

答案 0 :(得分:0)

CSRF不会阻止发出请求。它只会阻止处理请求。如果(在chrome中),您打开开发人员工具并检查网络选项卡,则只有第一个请求在重定向之前显示为黑色(其余请求为红色,表示错误。)

如果您希望在页面重新加载之前禁用请求之后禁用请求,则可以使用jQuery或Javascript禁用提交按钮。

$(document).ready(function(){

    $('#your-submit-button-id').click(function(){
        $('#your-submit-button-id').attr('disabled', true);
    });

});

答案 1 :(得分:0)

CSFR(跨站请求伪造)不是用于验证请求的数量,而是用于验证SESSION。在浏览器中清除cookie和缓存后,令牌应重新生成。

如果您想阻止提交多个请求,请停用上面提到的提交按钮,或使用标记:https://jeykeu.wordpress.com/2012/03/09/jquery-prevent-multiple-ajax-requests/

答案 2 :(得分:0)

就像添加以下功能:"this.disabled=true;this.value='Submiting...';this.form.submit();" 按钮的“ onclick”事件将对其进行处理。

<button type="submit" onclick="this.disabled=true;this.value='Submiting...';this.form.submit();" class="btn">Submiting...</button>