Подскажите в чем проблема в сессиях?

Статус
В этой теме нельзя размещать новые ответы.

AndBerd

Создатель
Регистрация
15 Янв 2009
Сообщения
15
Реакции
0
Необходимо подключение языкового файла в зависимости от выбранного на первой странице флажка.
Логика такова:
если index.php открывается первый раз (без переданной ему переменной $lang то выводиться русский, если нажали на флажок то эта же страница перегружается, но уже с определенной переменной.

Есть такой код:
PHP:
<?
session_start();
if (isset($lang)) { 
  unset($_SESSION['lang']);
  if ($lang==="ru") $_SESSION['lang']="ru";
  if ($lang==="en") $_SESSION['lang']="en";
  } else {
  //$lang = "ru"; $_SESSION['lang']="ru";           //  !!!!!! основная проблема
};
if ($_SESSION['lang']==="en") {
  require_once "languages/lang_en.php ";
}; 
else {require_once "languages/lang_ru.php ";};
//echo $lang;
//echo $_SESSION['lang'];
unset($lang);
?>

далее в теле страницы выводим флажки

HTML:
<div id="flags">
  <table width="52" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td><a href="Index.php?lang=ru"><img src="images/RU.gif" width="21" height="13" border="0" /></a></td>
      <td width="10" height="13"></td>
      <td><a href="Index.php?lang=en"><img src="images/EN.gif" width="21" height="13" border="0" /></a></td>
    </tr>
  </table>
</div>

Проблема в том, что все работает только один раз!
Стоит один раз выбрать язык, как затем его уже не возможно изменить?
Хотя поставил удаление переменных?

Подскажите где ошибка в коде.
Глаз замылился не могу найти.:bc:
Может я что то не правильно понимаю в работе сиссий?
Может они кэшируются, хотя запрет кэша тоже ставил не помогает.
 
Что тут делаю точка с запятой? перед else.
PHP:
if ($_SESSION['lang']==="en") {
  require_once "languages/lang_en.php ";
}; 
else
 
Что тут делаю точка с запятой? перед else.
PHP:
if ($_SESSION['lang']==="en") {
  require_once "languages/lang_en.php ";
}; 
else

Да действительно бестолковый КОСЯК. но на суть происходящего он не влияет.
Убрал - все тоже самое.
 
ну тогда require_once. оно не работает в условии. необходимо юзать include_once. В общем надо тщательнее курить мануалы. Правда там на английском, но вроде так.
 
ну тогда require_once. оно не работает в условии. необходимо юзать include_once. В общем надо тщательнее курить мануалы. Правда там на английском, но вроде так.

Исправил на include_once все равно таже ерунда.

Поставил впереди echo оказывается он с правильной $lang переменной только первый раз входит, а потом уже ее не меняет?????
Откуда он вытаскивает старую? кэширование запрещал!
Короче каждый раз работает в одной сессии только один раз правильно, затем не одну не другую поменять не может.
 
нет никакого кэширования. Из того, что ты дал, много не поймешь. Но можно сказать следующее.
1.Не нужно любить глобалы. юзай $_GET['lang']
2.Также не надо диких сравнений типа ===. хватит и ==
3. Любой дебагер через минуту уже дал бы тебе ответ, что куда пришло.
Лучше сделай в начале скрипта
PHP:
die(var_export($_GET, true));
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху