私は Laravel 5.8 を使用しており、ユーザーが (セッションが有効である限り) 2 時間ごとにのみフォームを送信できるようにしたいと考えていました。
だから私はコントローラーでこれを試しました:
if(Session::has('request_has_been_sent')){
return redirect()->back()->with('error', 'You just submitted a request and cannot submit a new one');
}else{
$withDraw = WithdrawWallet::create([
'balance_value' => $request->balance_wallet,
'can_draw' => $request->can_draw,
'shaba_number' => $request->shaba_number,
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'description' => $request->desc,
'status' => 'pending',
'user_id' => auth()->user()->usr_id,
]);
Session::put('request_has_been_sent');
}
return redirect()->back()->with('success','Your request was sent');
これにより、ユーザーが新しいリクエストを送信するたびに、セッションrequest_has_been_sent
を設定する必要があります。
したがって、次回ユーザーがフォームを送信したときに、セッションがまだ有効である場合は、メッセージYou just submitted a request and cannot submit a new one
が表示されます。
しかし今、問題はそれが機能しないことです。実際、ユーザーはリクエストを送信した直後に別のリクエストを送信できます。
これは、何らかの形でセッションが設定されていないことを意味します。
それで、ここで何がうまくいかないのですか?どうすればこれを適切に行うことができますか?