ФорумПрограммированиеPHP для идиотов → Language changer с помошью сессий

Language changer с помошью сессий

  • die2live

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 4 марта 2008 г. 9:35

    А хочу написать сктипт который меняет язык страницы.
    У меня на каждой странице есть блок с флагами. Каждый флаг это линк такова типа: page.php?lang=ru
    Также к каждой странице приклеплен с помошью include фаил который меняет язык с таким содержанием:
    session_start();
    $ln = $_GET['lang'];
    if (!isset($lang) && !isset($_SESSION['lang']) && !isset($ln))
    {
    echo $lang."no session no GET";
    session_register("lang");
    $lang = "ru";
    }
    else if (!isset($lang) && isset($ln))
    {
    echo $lang."no session is GET";
    session_register("lang");
    $lang = strtolower($ln);
    }
    else if (isset($lang) && isset($ln))
    {
    session_unregister(lang);
    echo $lang."both";
    session_register("lang");
    $lang = strtolower($ln);
    }

    Проблема в том что когда я жму на флаг то язык меняется, но когда перехожу на другую страницу язык опять стоновится русским(default).

    Помогите разобраться.
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 4 марта 2008 г. 9:41, спустя 5 минут 41 секунду

    1. session_register и session_unregister - в сад. Переписываем все без них.
    2. Язык вообще не храним в сессии, а передаем всегда в урле
    3. $ln = $_GET['lang']; - уже потенциальная ошибка. Вдруг lang не пришел.
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 4 марта 2008 г. 9:54, спустя 13 минут 49 секунд

    2. Язык вообще не храним в сессии, а передаем всегда в урле

    Почему? Всегда передавал в сессии, и не было никаких проблем.
  • die2live

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 4 марта 2008 г. 10:05, спустя 10 минут 39 секунд

    идея была использывать ГЕТ только когда менается язык. Если он пуст, то язык не меняется. Если в нем что-то есть, язык меняется.
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 4 марта 2008 г. 10:16, спустя 11 минут 12 секунд

    Как ты кинешь своему американскому другу ссылку на страницу, где размещена новость на его родном языке? )))
  • die2live

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 4 марта 2008 г. 10:23, спустя 6 минут 16 секунд

    Очень просто: http://www.site.ru/index.php?lang=en

    Просто если я сейчас буду ставить на все ссылки ?lang= , мне придется всю ночь это делать, их очень много







  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 4 марта 2008 г. 10:25, спустя 2 минуты 56 секунд


    Очень просто: http://www.site.ru/index.php?lang=en
    Я же сказал "на страницу, где размещена новость", а не на главную
  • die2live

    Сообщения: 4 Репутация: N Группа: Кто попало
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 4 марта 2008 г. 10:47, спустя 3 минуты 59 секунд

    Т.е. предлагается после копирования ссылки из адресной строки доправить ее руками? Офигительно удобно …
    А поисковики об этом как догадаются?
  • Animator

    Сообщения: 194 Репутация: N Группа: Кто попало

    Spritz 5 марта 2008 г. 1:32, спустя 14 часов 44 минуты 32 секунды


    Т.е. предлагается после копирования ссылки из адресной строки доправить ее руками? Офигительно удобно …
    А поисковики об этом как догадаются?


    зачем поправлять? какая проблема иметь такую строку в адресной книге?
    достаточно к каждому хрефу дописать &lang=<?php echo $lang; ?>
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 5 марта 2008 г. 2:05, спустя 33 минуты 16 секунд

    достаточно к каждому хрефу дописать &lang=<?php echo $lang; ?>

    звучит легко и не принужденно, но это же гемор…
    все умрут, а я изумруд
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 5 марта 2008 г. 3:02, спустя 57 минут 7 секунд

    зачем поправлять? какая проблема иметь такую строку в адресной книге?

    Не понял. Вcе страницы сайта всегда иметь в адресной книге?

    достаточно к каждому хрефу дописать &lang=<?php echo $lang; ?>

    Ну е-мое, а я с чего начал. Только зачем тогда сессия?
  • Animator

    Сообщения: 194 Репутация: N Группа: Кто попало

    Spritz 5 марта 2008 г. 6:27, спустя 3 часа 25 минут 14 секунд

    сесия не нужна, но у die2live насколько я понял проблема в том что он хотел все это организовать сесией и вообщем ты сказал ему правильно - ession_register и session_unregister - в сад. Переписываем все без них.
  • Animator

    Сообщения: 194 Репутация: N Группа: Кто попало

    Spritz 10 марта 2008 г. 8:50, спустя 5 дней 1 час 23 минуты

    внял вашим разумным советам и переделал свой Language changer, но встретил такую проблему - какие хрефы давать флагам?

    попробовал так
    <a href="<?php echo $_SERVER['REQUEST_URI']; ?>&lang=en">
    <img src="files/en.gif" width="20" height="10" hspace="2" border="0" align="absmiddle" /></a>


    но в большинстве случаев REQUEST_URI уже содержит переменную lang и получается что в урле 2 раза одна и тажа переменная с разными данными. технически проблем не каких, но хотелось бы сделать более грамотно. какой способ подскажете?
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 10 марта 2008 г. 9:04, спустя 13 минут 21 секунду

    напиши функцию, которая смотрит есть ли лэнг в урле или нету..
    все умрут, а я изумруд

Пожалуйста, авторизуйтесь, чтобы написать комментарий!