Zergio 0 Опубликовано: 28 апреля 2008 Рассказать Опубликовано: 28 апреля 2008 (изменено) Хочу сделать вот что: при заходе на сайт есть только форма для логина, нужно чтоб скрипт определял язык браузера и делал редирект в зависимости от языка на определенный шаблон + прописывал cookie, чтоб в дальнейшем брать это значение оттуда. А если пользователь уже залогинен, то сразу идет редирект куда надо. Вообщем написал я код, но что-то не работает (вообще сайт не грузится), подскажите что не так? В index.php в первых строчках записал: if (!$_COOKIE['lang']) { //проверяю отсутствие значения lang в cookie $lang = substr($HTTP_ACCEPT_LANGUAGE, 0,2); //обрезаю значение языка браузера до 2-х буквенного кода if ( $lang == 'en' ) { //если "en" то: set_cookie ("lang", $lang, time() + 60*60*24*365); //ставим cookie header("Location: index.php?action_skin_change=yes&skin_name=en"); //редирект } elseif ( $lang == 'es' ) { //если "es" то: set_cookie ("lang", $lang, time() + 60*60*24*365); //ставим cookie header("Location: index.php?action_skin_change=yes&skin_name=es"); //редирект } elseif ( $lang == 'ru' ) { //если "ru" то: set_cookie ("lang", $lang, time() + 60*60*24*365); //ставим cookie header("Location: index.php?action_skin_change=yes&skin_name=ru"); //редирект } else { //если ничего, то ставим "en" по дефолту set_cookie ("lang", "en", time() + 60*60*24*365); //ставим cookie } } if ( $_COOKIE['lang'] == 'en' ) { //если есть "lang" из cookie, то переадресую кому куда надо header("Location: index.php?action_skin_change=yes&skin_name=en"); } if ( $_COOKIE['lang'] == 'es' ) { header("Location: index.php?action_skin_change=yes&skin_name=es"); } if ( $_COOKIE['lang'] == 'ru' ) { header("Location: index.php?action_skin_change=yes&skin_name=ru"); } Плюс в login.tpl записал если кто уже залогинен: if ($is_logged == TRUE){ if ( $_COOKIE['lang'] == 'en' ) { header("Location: en.site.com"); } if ( $_COOKIE['lang'] == 'es' ) { header("Location: es.site.com"); } if ( $_COOKIE['lang'] == 'ru' ) { header("Location: ru.site.com"); } } Изменено 28 апреля 2008 пользователем Zergio Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 28 апреля 2008 Рассказать Опубликовано: 28 апреля 2008 во-первых, после header("Location: лучше останавливать скрипт, чтобы он не выполнялся дальше. Обычный die() сойдёт. во-вторых, мне не понятно зачем устанавливать куку. В итоге я думаю код можно привести к такому виду: $lang = substr($HTTP_ACCEPT_LANGUAGE, 0,2); //обрезаю значение языка браузера до 2-х буквенного кода if ($lang == 'en' || $lang == 'es' || $lang == 'ru') { header('Location: index.php?action_skin_change=yes&skin_name='.$lang); die(); } Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 28 апреля 2008 Рассказать Опубликовано: 28 апреля 2008 Автор При перенаправлении вышла вот такая надпись: "Адрес был перенаправлен на index.php?action_skin_change=yes&skin_name=ru. Пожалуйста, щелкните ссылку для перехода. Можно включить автоматическое перенаправление в настройках." А как сделать чтоб этого не было и сразу перекидывало автоматом? Кроме того мне так кажется удобнее записать в куку, чем держать значение в переменной. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 28 апреля 2008 Рассказать Опубликовано: 28 апреля 2008 При перенаправлении вышла вот такая надпись:не понял это где и в каком браузере так вышло? лучше скриншот Кроме того мне так кажется удобнее записать в куку, чем держать значение в переменной.собственно разницы никакой, а раз никакой - лучше 6 строчек кода, чем 24 Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 28 апреля 2008 Рассказать Опубликовано: 28 апреля 2008 (изменено) Автор С надписью - это видать глюк какой-то был в Опере. А вообщем все сделал, без куков, ты lifestar как всегда прав. Спасибо, я вот не знал что процесс убивать надо, вот и не выходило. Теперь все супер. P.S. сайт сделан в UTF8, но в IE6 постоянно выходит в win1251, это проблема IE6 или я что не так сделал? И как с этим бороться можно? Изменено 28 апреля 2008 пользователем Zergio Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 28 апреля 2008 Рассказать Опубликовано: 28 апреля 2008 сайт сделан в UTF8, но в IE6 постоянно выходит в win1251<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />стоит? Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 28 апреля 2008 Рассказать Опубликовано: 28 апреля 2008 (изменено) Автор Стоит, вот так <meta http-equiv="Content-Type" content="text/html; charset=utf8" /> P.S. кстати вот еще вопросец: как сделать кеширование запросов, не включением кеша, а кешировать мои запросы которые я дописал в DLE? Изменено 28 апреля 2008 пользователем Zergio Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 081 Опубликовано: 29 апреля 2008 Рассказать Опубликовано: 29 апреля 2008 charset=utf8 нет такой кодировки utf8 есть UTF-8 Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 29 апреля 2008 Рассказать Опубликовано: 29 апреля 2008 Автор Значит я создал новую кодировку !!! Хе-хе. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.