首页 > 解决方案 > 使用随机令牌检查 Laravel 多次点击重复数据

问题描述

我有一个表单,我正在向 db 添加一些数据,但是如果用户多次单击按钮,我想避免重复记录,我可以使用 JS 禁用按钮,但我也想在服务器端进行一些检查。

目前在表单上我正在设置一个带有随机数的会话变量并使用文本框(隐藏)将其发送到控制器,然后在控制器中我检查会话变量是否等于文本框然后添加到数据库 - 但数据仍然在数据库中添加多次,如果有人可以提供帮助,将不胜感激。谢谢。

控制器:

if ($request->token == session('test')){
    session()->forget('test');
    sleep(20); (this i added in order to test)
    TableName::create([
        'code' => 'test',
        'name' => 'testing',
    ]);
    return "done";
} else {
    return "stopped";
}

刀:

{{session(['test'=> rand()])}}
<input type="text" value="{{session('test')}}" name="token">

标签: phplaravelvalidationserver-side

解决方案


您可以检查 MYSQL 中不存在,检查下面

INSERT INTO table_listnames (name, address, tele)
SELECT * FROM (SELECT 'Rupert', 'Somewhere', '022') AS tmp
WHERE NOT EXISTS (
SELECT name FROM table_listnames WHERE name = 'Rupert'
) LIMIT 1;

推荐阅读