Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

ReakyMark's avatar

Why session expire in next request ?

i try many time and my Language session still expire when i goto next page this is my Code

middleware:

 public function handle($request, Closure $next)
    {
        
        if (App::isLocale('en'))
        {
            $request->session()->put('lang', '');
        } 
        elseif (App::isLocale('kh'))
        {
            $request->session()->put('lang', '_kh');
        }
        
        return $next($request);
    }

my baseController so i call isLanguageSwitcher in baseController __construct() so other Controller that extent from baseController will have Lang session

public function isLanguageSwitcher()
    {
    if(Request::has('kh_lang'))
    {
          App::setLocale('kh');
           // return redirect()->back();
    }
    elseif (Request::has('en_lang'))
    {
            App::setLocale('en');
           // return redirect()->back();
    }
}

my Blade language form

<form method="post">
      {{ csrf_field() }}
      {!!
        (App::isLocale('en') ) 
        ? '<button type="submit" name="kh_lang">Khmer</button>'
        : '<button type="submit" name="en_lang">English</button>'
      !!}
      
    </form>

language is change when i click English button but when i goto next page Session('lang') expire and return to default value kh i'm new to laravel not sure what wrong with my logic.

  1. how to solve session expire in next request ?

  2. other question is how to prevent F5(refresh page) that pop resubmit form ? coz i try redirect->back() it still pop resubmit.

Thank in advance. :D

0 likes
2 replies
satiseven777's avatar

I dont think ur session has expire!dump ur all session and test it,ur using helpers if you use session()->put('lang', ''); I think is better!

ReakyMark's avatar

@satiseven777 i test it with laravel debuggar when next request session('lang') set to _kh not empty that english must be present in next request

Please or to participate in this conversation.