Php 使用随机令牌检查Laravel在多次单击时复制数据
我有一个表单,其中我将向db添加一些数据,但我希望避免重复记录,如果用户多次单击按钮,我可以使用JS禁用按钮,但我也希望在服务器端进行一些检查 目前,在表格中,我设置了一个带有随机数的会话变量,并使用textbox(隐藏)将其发送给控制器,然后在控制器中,我检查会话变量是否等于textbox,然后将其添加到db中-但数据仍然以db的形式添加了多次,如果有人能提供帮助,我将不胜感激。谢谢 控制器:Php 使用随机令牌检查Laravel在多次单击时复制数据,php,laravel,validation,server-side,Php,Laravel,Validation,Server Side,我有一个表单,其中我将向db添加一些数据,但我希望避免重复记录,如果用户多次单击按钮,我可以使用JS禁用按钮,但我也希望在服务器端进行一些检查 目前,在表格中,我设置了一个带有随机数的会话变量,并使用textbox(隐藏)将其发送给控制器,然后在控制器中,我检查会话变量是否等于textbox,然后将其添加到db中-但数据仍然以db的形式添加了多次,如果有人能提供帮助,我将不胜感激。谢谢 控制器: if ($request->token == session('test')){ se
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">
{{session(['test'=>rand()])}
您可以检查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;
LaravelFIRST或CREATE或firstOrNew中有两种方法 提及 firstOrNew方法(如firstOrCreate)将尝试在数据库中查找与给定属性匹配的记录。但是,如果找不到模型,将返回一个新的模型实例
// Retrieve flight by name, or create it with the name, delayed, and arrival_time attributes...
$flight = App\Flight::firstOrCreate(
['name' => 'Flight 10'],
['delayed' => 1, 'arrival_time' => '11:30']
);
单击一次后,通过JavaScript禁用按钮。您可以创建哈希来预先检查sql中的输入,或者如果必须这样做,则将列更改为唯一以避免重复。如果您使用laravel yung,则可以在验证控制器上使用
unique
函数在该列上设置唯一键将非常有用