WilsonG
WilsonG

Reputation: 199

Session on page load

I'm building multiple language web and found problem. My language is changing depending on session variable and on first load the session is empty,only after refreshing the page it gets the right session variable. How to set the variable before the page load? This is the code :

    session_start();

  $available_langs = array('en','rus');
    if ($_SESSION['lang']=='') {
       $_SESSION['lang'] = 'en';
   }
  if(isset($_GET['lang']) && $_GET['lang'] != ''){ 
    if(in_array($_GET['lang'], $available_langs))
    {       
      $_SESSION['lang'] = $_GET['lang'];
    }
  }
  include('language/'.$_SESSION['lang'].'.php');  

Upvotes: 1

Views: 213

Answers (1)

Niels Keurentjes
Niels Keurentjes

Reputation: 41958

  session_start();

  // Direct override beats session
  $lang = $_GET['lang'] ?: $_SESSION['lang'];
  $available_langs = array('en','rus');

  // If the requested language isn't available, or not provided, fall back to first
  if(!in_array($lang, $available_langs))
    $lang = $available_langs[0];

  // Store it in the session and include the template
  $_SESSION['lang'] = $lang;
  include 'language/'.$lang.'.php';  

Upvotes: 2

Related Questions