2014-10-22 3 views
1

Я создаю многоязычную сеть и нашел проблему. Мой язык меняется в зависимости от переменной сеанса и при первой загрузке сеанс пуст, только после обновления страницы он получает правильную переменную сеанса. Как установить переменную перед загрузкой страницы? Это код:Сессия на загрузке страницы

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

Вы можете разместить свое полное содержание сценария? – Anas

+2

Изменить if ($ _SESSION ['lang'] == '') на if (! Isset ($ _ SESSION ['lang'])) Помогает ли это? –

+0

Этот код работает для меня. Вместо «include» у меня есть только «var_dump» переменная, и ее значение было 'en' – vaso123

ответ

2
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'; 
Смежные вопросы