За последние 24 часа нас посетил 30601 программист и 1801 робот. Сейчас ищут 986 программистов ...

Сессии, мультиязычный сайт

Тема в разделе "PHP для новичков", создана пользователем aziz, 15 апр 2009.

  1. aziz

    aziz Активный пользователь

    С нами с:
    1 фев 2006
    Сообщения:
    194
    Симпатии:
    0
    Адрес:
    Ташкент
    Всем доброго времени суток.
    Решил сделать мультиязычный сайт, то есть выбор языка. Но столкнулся с такой проблемой быть может кто поможет решить. Выборка языка делается из ваподающего меню, вроде всё работает, и через сессию передаётся нужное значение но проблема в том что если я из другой страницы возвращаюсь на главную то сессия обнуляется и вместо выбронного языка устанавливается значение по умолчанию как с этим боротся не соображу, быть может кто сталкивался с этой проблемой... вот скрипт в кратце
    PHP:
    1. <?php session_start(); //сессия начата
    2.  
    3. $_SESSION['lang']=$_REQUEST['lang']; //берём значение select из формы
    4. if(empty($_SESSION['lang'])) // если сессия пуста то язык по умолчанию русский
    5. {
    6. $_SESSION['lang']='RU';
    7. echo "Язык по умолчанию Русский";
    8. }
    9. else{ //иначе выбираем нужный язык
    10. if($_SESSION['lang']=='RU')
    11. {
    12. echo "Выбран Русский язык";
    13. }
    14. elseif($_SESSION['lang']=='DE')
    15. {
    16. echo "Выбран Немецкий язык";
    17. }
    18. elseif($_SESSION['lang']=='EN')
    19. {
    20. echo "Выбран Английский язык";
    21. }
    22. }
    23. ?>
    24.  
    25. <html >
    26. <head>
    27. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    28.  
    29. </head>
    30.  
    31. <body>
    32. <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
    33.   <select name="lang" size="1">
    34.   <option value="DE">Немецкий</option>
    35.   <option value="RU">Русский</option>
    36.   <option value="EN">Английский</option>
    37. </select> <input name="submit" type="submit" value="Выбрать" />
    38. </form>
    39. <a href="index2.php">Проверка</a> <!--Проверяем выбранный язык-->
    40.  
    41. </body>
    42. </html>
    43.  
    а здесь я проверяю работу сессии и здесь же обратная ссылка
    PHP:
    1. <?php session_start(); //продолжаем сессию?>
    2.  
    3. <html >
    4. <head>
    5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    6. <title>Untitled Document</title>
    7. </head>
    8.  
    9. <body><?=$_SESSION['lang']; //отображаем какой язык выбран?>
    10. <a href="index.php">На главную</a>
    11. </body>
    12. </html>
    13.  
    Буду весьма признателен за помощь.... :D
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    if(!isset($_SESSION['lang']))$_SESSION['lang'])=$_REQUEST['lang'];
     
  3. aziz

    aziz Активный пользователь

    С нами с:
    1 фев 2006
    Сообщения:
    194
    Симпатии:
    0
    Адрес:
    Ташкент
    что то не совсем понял у меня же уже есть
    PHP:
    1. if(empty($_SESSION['lang'])) // если сессия пуста то язык по умолчанию русский
    2.  {
    ??
     
  4. kas1e

    kas1e Активный пользователь

    С нами с:
    6 апр 2009
    Сообщения:
    280
    Симпатии:
    0
    $_SESSION['lang']=$_REQUEST['lang']; //берём значение select из формы

    а у тебя при переходе на главную $_REQUEST['lang'] какое значение имеет, если ничего не введено? никакого? значит сессии ты приравниваешь пустое значение? может она становится empty? и приравнивается RU.

    PHP:
    1. <?php
    2.   switch ($_SESSION['lang']){
    3.     case ('RU'): echo "Выбран Русский язык"; break;
    4.     case ('DE'): echo "Выбран Немецкий язык"; break;
    5.     case ('EN'): echo "Выбран Английский язык"; break;
    6.     default: $_SESSION['lang']='RU'; echo "Язык по умолчанию Русский";
    7.   }
    8. ?>
    так удобней ;)
     
  5. alexeurodnepr

    alexeurodnepr Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    а лучше в куках... имхо, мне б запарило после каждого выключения браузера включать себе желаемый язык
     
  6. aziz

    aziz Активный пользователь

    С нами с:
    1 фев 2006
    Сообщения:
    194
    Симпатии:
    0
    Адрес:
    Ташкент
    а если пользовател отключил куки?
     
  7. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    А еще javascript, картинки и вообще у него Lynx :D
     
  8. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    В Lynx вроде как есть куки. Я с него майл проверял и на этом форуме флудил.
     
  9. ATI

    ATI Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    Тогда сессии ещё.