Laravel / PHP多表单提交(多次单击提交按钮)

时间:2018-03-23 16:43:22

标签: php forms laravel submission

由于多次提交表单,我遇到了一些问题。 我正在使用laravel作为框架并创建一个浏览器游戏(我知道,有数百万)只是为了好玩。

我有一个带有“Construct”按钮的建筑物的页面,其形式为(method =“post”)。

如果我按住Enter键4-5秒,将触发许多请求,用户可以在数据库中创建许多记录。

我不希望只有客户端修复

$(document).on('submit', 'form', function() {
    $(this).find('button:submit, input:submit').attr('disabled', 'disabled);
});

因为从不信任客户

有人在这里有解决方案(可能有laravel)吗?

提前致谢。

最好的问候。

2 个答案:

答案 0 :(得分:0)

您可以使用csrf令牌在服务器端控制它。您的表单将具有用于防止跨站点请求伪造的令牌,您可以在控制器中访问此令牌以唯一地标识客户端。当请求到达控制器时,您可以检查客户端是否第一次发送请求。如果不是第一次你可以返回。 例如: -

public function construct(Request $request){
     $token = $request->_token;
     //check weather the token already exists or not, using db or session
     if(exists){
         return;
     }
}

答案 1 :(得分:0)

"生成随机令牌。将令牌放入会话中。将表单中的标记作为隐藏字段。提交时,如果收到的令牌等于会话中的令牌,请执行数据库中的所有内容并从会话中删除令牌。"

"将中间件用于路由组(laravel.com/docs/5.6/routing#route-group-middleware),您可以查看:: share(laravel.com/docs/5.6/views#sharing-data- with-all-views)随机令牌并保存在会话中。"

谢谢@assistbss