我正在使用 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則會出現該訊息。
但現在的問題是它不起作用。事實上,用戶仍然可以在提交請求后立即提交另一個請求。
這意味著會話未以某種方式設定。
那么這里出了什么問題呢?我怎樣才能正確地做到這一點?
uj5u.com熱心網友回復:
您可以使用set和put方法設定會話
Session::put('name','value');
使用 get 檢索它
Session::get('name')
因此,在您的情況下,您需要設定會話使用
Session::put('request_has_been_sent','yes');
并檢查它是否設定或不使用
if(Session::get('request_has_been_sent')){
檔案:https : //laravel.com/docs/5.0/session
uj5u.com熱心網友回復:
我認為您在這里唯一的問題是沒有將會話值設定為您需要將其設定為某些內容的任何內容,否則 Laravel 將忽略它。
Session::put('request_has_been_sent', true);
// Check if it exists, this will check if it exists without getting it
Session::has('request_has_been_sent')
uj5u.com熱心網友回復:
一旦用戶退出所有用戶會話將被重繪 。這意味著用戶并創建和WithdrawWallet注銷然后再次登錄然后用戶可以創建另一個WithdrawWallet以便修復您可以使用快取
$cacheKey = WithdrawWallet::class.'.'.auth()->user()->usr_id;
if (Cache::has($cacheKey)) {
return redirect()->back()->with('error', 'You just submitted a request and cannot submit a new one');
} else {
$withDraw = Cache::remember($cacheKey, now()->addHours(2), function () use ($request){
return 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,
]);
});
}
return redirect()->back()->with('success', 'Your request was sent');
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364838.html
標籤:php 拉拉维尔 会议 laravel-5.8 laravel 会话
下一篇:碳跳過某個月
