2013-09-10 5 views
0

Я пытаюсь работать с простой инициализацией языка, ниже приведены предложения. Пропустили ли какие-либо возможные ситуации, когда у пользователя не было бы ни языкового набора по умолчанию, ни выбранного языка?Выбор языка инициализации

  • Если lang будет разместившего назначить его $ _SESSION
  • Если lang не выложили увидеть, если $ _SESSION не существует, и назначить по умолчанию
  • В противном случае ничего не делать, как $ _SESSION уже установлен с выбранным языком и заполненным.

    if(isset($_POST['lang'])) { 
        $_SESSION['lang'] = $_POST['lang']; 
    } else { 
        if(!isset($_SESSION['lang'])) { 
        $_SESSION['lang'] = 'en_uk'; 
        } 
    } 
    

ответ

1

Это выглядит хорошо, если вы хотите, чтобы язык в сеансе. Хотя cookie будет лучше.

Возможно, вы захотите иметь какую-либо проверку на значение POSTED, прежде чем сохранять его на сеанс или искать строки в базе данных или файлах.

if(!preg_match('/^[a-z]{2}_[a-z]{2}$/', $_POST['lang'])) 
    die('Wrong lang parameter format'); 
0

Положив язык в сессии может иметь странные непреднамеренные эффекты.

Сессии - .. хорошо .. сеанс широкий. Если я открою два окна на вашем веб-сайте, и я изменил язык на одном, язык на другом тоже переключится при загрузке другой страницы.

Помещенный язык в URL, как:

  • my.domain.com/ en_uk/вакансии
  • my.domain.com/ en_us/работы

Этот эффект становится еще более странным, когда «следующая страница» не является страницей, а, например, формой, которую я отправляю.

Смежные вопросы