猿问

使用随机令牌检查 Laravel 多次点击重复数据

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


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


控制器:


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">


ABOUTYOU
浏览 215回答 2
2回答

人到中年有点甜

我有一个表单,我在其中向 db 添加了一些数据,但是如果用户多次单击按钮,我想避免重复记录,我可以使用 JS 禁用该按钮,但我也想在服务器端进行一些检查。目前在表单上,我正在设置一个带有随机数的会话变量,并使用文本框(隐藏)将其发送到控制器,然后在控制器中检查会话变量是否等于文本框,然后添加到 db - 但数据仍然在 db 中多次添加,如果有人可以提供帮助,我们将不胜感激。谢谢。控制器:if ($request->token == session('test')){&nbsp; &nbsp; session()->forget('test');&nbsp; &nbsp; sleep(20); (this i added in order to test)&nbsp; &nbsp; TableName::create([&nbsp; &nbsp; &nbsp; &nbsp; 'code' => 'test',&nbsp; &nbsp; &nbsp; &nbsp; 'name' => 'testing',&nbsp; &nbsp; ]);&nbsp; &nbsp; return "done";} else {&nbsp; &nbsp; return "stopped";}刀刃:{{session(['test'=> rand()])}}<input type="text" value="{{session('test')}}" name="token">

慕尼黑的夜晚无繁华

Laravel 中有两种方法firstOrCreate或firstOrNew。参考https://laravel.com/docs/5.8/eloquentfirstOrNew 方法,如 firstOrCreate 将尝试在数据库中定位匹配给定属性的记录。但是,如果没有找到模型,则会返回一个新的模型实例// Retrieve flight by name, or create it with the name, delayed, and arrival_time attributes...$flight = App\Flight::firstOrCreate(&nbsp; &nbsp; ['name' => 'Flight 10'],&nbsp; &nbsp; ['delayed' => 1, 'arrival_time' => '11:30']);
随时随地看视频慕课网APP
我要回答