繁体   English   中英

Session put 似乎无法正常工作

[英]Session put does not seem to be working properly

我正在使用 Laravel 5.8,我想确保用户只能每 2 小时提交一次表单(只要 session 还活着)。

所以我在 Controller 上尝试了这个:

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');

因此,每次用户提交新请求时,都必须设置 session request_has_been_sent

因此,在用户下次提交表单时,如果 session 仍然存在,则会出现消息You just submitted a request and cannot submit a new one ”。

但现在的问题是它不起作用。 事实上,用户仍然可以在提交请求后立即提交另一个请求。

这意味着 session 没有以某种方式设置。

那么这里出了什么问题? 我怎样才能正确地做到这一点?

您可以使用setput方法设置 session

Session::put('name','value');

使用 get 检索它

Session::get('name')

所以在你的情况下,你需要设置你的 session 使用

Session::put('request_has_been_sent','yes');

并检查它是否已设置或不使用

if(Session::get('request_has_been_sent')){

文档: https://laravel.com/docs/5.0/session

我认为您在这里唯一的问题是没有将 session 值设置为您需要将其设置为某个值,否则 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')

一旦用户注销,用户会话将被清除。 这意味着用户创建并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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM