【发布时间】:2014-09-18 10:13:55
【问题描述】:
快速点击提交按钮时如何防止多次提交?
这是我的store 函数:
public function store()
{
$input = Input::except('_token');
$country = new Country($input);
$country->save();
}
我考虑过为唯一 ID 添加验证。但我认为,如果相同的方法多次执行,每个Country 实例会有所不同,因此会有不同的 id,所以无论如何都会创建条目。我不喜欢在这种情况下使用验证的想法。
我有一些东西可以防止在更新实体时多次提交:
public function updatePost(Post $post) {
if (count($post->getDirty()) > 0) {
$post->save();
return Redirect::back()->with('success', 'Post is updated!');
} else {
return Redirect::back()->with('success', 'Nothing to update!');
}
}
但是,getDirty() 在存储新实体时没有任何帮助。
我已经搜索了一段时间,但没有直接找到任何东西。
处理这个问题的常用方法是什么?
编辑。尝试使用Redirect::route(),但我得到了相同的结果。
【问题讨论】:
-
我看到了,但没有帮助。
-
答案中有一条评论说答案中的选项不是选项。
Session::put('_token', sha1(microtime()))和Redirect::route('form/success')->with("data", $myData)都需要完成。而且你需要在store()的开头顺便做Session::put('_token', sha1(microtime()))。 -
为什么不能使用其他stackoverflow的方法?保存数据库的IP/时间。如果同一个IP在预定时间内请求另一个条目,则拒绝它