Laravel/PHP多种表单提交(多次单击提交按钮) [英] Laravel/PHP multiple form submissions (multiple click on submit button)

查看:222
本文介绍了Laravel/PHP多种表单提交(多次单击提交按钮)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I've some problems due to multiple form submissions. I'm using laravel as framework and creating a browsergame (I know, there are millions) just for fun.

我有一个带有按钮"Construct"的建筑物页面,该按钮的形式为(method ="post").

I've a page for buildings with a button "Construct" which is in a form (method="post").

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

If I hold Enter for 4-5 seconds many request will be fired and the user can create many records in the database.

我不希望像这样的唯一客户端修复程序

I don't want an only client side fix like

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

因为永远不要信任客户.

有人在这里解决问题(也许是laravel)吗?

Is someone here with a solution (maybe with laravel)?

谢谢.

最诚挚的问候.

推荐答案

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

"Generate a random token. Put token in session. Put token in form as hidden field. On submit if token received is equal to the one in session do all the stuff on database and delete token from session."

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

"Using middleware for route group (laravel.com/docs/5.6/routing#route-group-middleware) you can View::share (laravel.com/docs/5.6/views#sharing-data-with-all-views) a random token and save on session."

感谢@assistbss

Thanks @assistbss

这篇关于Laravel/PHP多种表单提交(多次单击提交按钮)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆