Эта тема на forum.dklab.ru


Сергей: Правильный "подъем" cookies
Здравствуйте уважаемые профи и остальные.
У меня такая вот задачка не решается: я сделал на сайте поддержку двух языков, когда пользователь заходит я определяю какой у него стоит язык системы и если не русский - то выдаю ему английскую версию автоматом (иначе грузится русская). Естественно потом пользователь может выбрать сам нужную версию, если захочет - этот механизм я решил с помощью сессий. Но вот незадачка - пользователь с сайта уходит и сессия убивается автоматом, а хотелось бы чтобы языковые предпочтения сохранились у пользователя в куках, чтобы когда он придет во второй раз поднять куки и сразу выдать ему ту версию которую он выбрал в прошлый раз. ВНИМАНИЕ вопрос! Куда и как правельнее вставить в код установку cookies. (свой вариант вставки я преводить не буду чтобы сильно не ругались за ламерство) Вот код:

reset( $HTTP_GET_VARS );
session_start();
global $HTTP_SERVER_VARS;
if( $lang ) {
unset( $_SESSION[ "cur_lang" ] );
$_SESSION[ "cur_lang" ] = $lang;
} else if( !$_SESSION[ "cur_lang" ] ) {
if ( $HTTP_SERVER_VARS["HTTP_ACCEPT_LANGUAGE"] == "ru" ) {
$lang = "rus";
} else {
$lang = "eng";
}
$_SESSION[ "cur_lang" ] = $lang;
} else {
$lang = $_SESSION[ "cur_lang" ];
}

Буду рад любым советам.
Евгений Бондарев:
Сергей, в вашем коде все нормально. Просто при установке $_SESSION['cur_lang'] надо добавить установку куки
setcookie ("cur_lang", $lang ,time()+3600*24*365); // ставим куку на год

а при прверке добавить:

.....
} else if( !$_SESSION[ "cur_lang" ] ) {
if ($_COOKIE['cur_lang']) {
$lang = $_COOKIE['cur_lang'];
}elseif ( $_SERVER["HTTP_ACCEPT_LANGUAGE"] == "ru" ) {
$lang = "rus";
} else {
$lang = "eng";
}
$_SESSION[ "cur_lang" ] = $lang;
setcookie ("cur_lang", $lang ,time()+3600*24*365); // это добавляем после каждого переопределения языка или вообще выносим за пределы конструкции определения
}
....

Сергей:
Спасибо за идею Евгений. Я почти так же сделал и куку там где вы советовали поставил, но оно не работало, А ВОТ СТОИЛО КУКУ ВЫНЕСТИ ЗА ПРЕДЕЛЫ алгоритма и все заработало.

Большое спасибо.

Эта тема на forum.dklab.ru