Смена языка на сайте

Red Alert

Новичок
Смена языка на сайте

Подскажите плз как улучшить код смены языка
в смысле безопасности и любой совет подойдёт
я только учусь :
PHP:
function lang(){
if (($_GET['lg'] == "") OR ($_GET['lg'] == "en")){
 $lg = $_GET['lg']."lang_en.php";
 require("lang/lang_en.php");
}elseif (($_GET['lg'] == "ru")){
  require("lang/lang_ru.php");
}elseif (($_GET['lg'] == "es")){
  require("lang/lang_es.php");
}else {
 require("lang/lang_en.php");
 }
}
 

SelenIT

IT-лунатик :)
Непонятен смысл строчки
PHP:
$lg = $_GET['lg']."lang_en.php";
и первый if я бы заменил на
PHP:
if (!isset($_GET['lg']))
А в смысле безопасности, имхо, неплохо.
 
Red Alert
немного по-другому...
в этом варианте проще изменять путь к файлам и удалять/добавлять новые языки....
PHP:
// Все существующие языки.
$lang = array('en', 'ru', 'es');

// Если язык не задан, или выбран несуществующий, то используем по-умолчанию.
if( !isset($_GET['lg']) || !strlen($_GET['lg']) || !in_array($lang, $_GET['lg']) )
    $_GET['lg'] = 'en';

require('lang/lang_'.$_GET['lg'].'.php');
 

Red Alert

Новичок
Спасибо Loshadka
но не работаетб только берёт английский язык по умолчанию.
и пришет: Warning: in_array(): Wrong datatype for second argument in
 
Гравицапа, Red Alert

да, сорри... утро :)
PHP:
// Все существующие языки. 
$lang = array('en', 'ru', 'es'); 

// Если язык не задан, или выбран несуществующий, то используем по-умолчанию. 
if( !isset($_GET['lg']) || !strlen($_GET['lg']) || !in_array($_GET['lg'], $lang) ) 
    $_GET['lg'] = 'en'; 

require('lang/lang_'.$_GET['lg'].'.php');
 

Red Alert

Новичок
Автор оригинала: Loshadka

PHP:
 !in_array($_GET['lg'], $lang) )
Я пробовал так, там в мануалах вычитал, но мне выдавало полную белиберду на введение языка типа 'fr' или 'dgsgfggsg' , а скопировал твоё исправление всё ОК.
Видно руки слишком кривые :confused:

Ладно, спасибо, всё работает
 
Сверху