Перейти к публикации

Переадресация При Входе


Рекомендованные сообщения

Хочу сделать вот что:

при заходе на сайт есть только форма для логина, нужно чтоб скрипт определял язык браузера и делал редирект в зависимости от языка на определенный шаблон + прописывал 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");

	}

}

Изменено пользователем Zergio
Ссылка на сообщение
Поделиться на других сайтах

во-первых, после 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();

}

Ссылка на сообщение
Поделиться на других сайтах

При перенаправлении вышла вот такая надпись:

"Адрес был перенаправлен на index.php?action_skin_change=yes&skin_name=ru. Пожалуйста, щелкните ссылку для перехода.

Можно включить автоматическое перенаправление в настройках."

А как сделать чтоб этого не было и сразу перекидывало автоматом?

Кроме того мне так кажется удобнее записать в куку, чем держать значение в переменной.

Ссылка на сообщение
Поделиться на других сайтах

При перенаправлении вышла вот такая надпись:
не понял это где и в каком браузере так вышло? лучше скриншот

Кроме того мне так кажется удобнее записать в куку, чем держать значение в переменной.
собственно разницы никакой, а раз никакой - лучше 6 строчек кода, чем 24
Ссылка на сообщение
Поделиться на других сайтах

С надписью - это видать глюк какой-то был в Опере.

А вообщем все сделал, без куков, ты lifestar как всегда прав.

Спасибо, я вот не знал что процесс убивать надо, вот и не выходило. Теперь все супер.

P.S. сайт сделан в UTF8, но в IE6 постоянно выходит в win1251, это проблема IE6 или я что не так сделал? И как с этим бороться можно?

Изменено пользователем Zergio
Ссылка на сообщение
Поделиться на других сайтах
сайт сделан в UTF8, но в IE6 постоянно выходит в win1251
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

стоит?

Ссылка на сообщение
Поделиться на других сайтах

Стоит, вот так

<meta http-equiv="Content-Type" content="text/html; charset=utf8" />

P.S. кстати вот еще вопросец: как сделать кеширование запросов, не включением кеша, а кешировать мои запросы которые я дописал в DLE?

Изменено пользователем Zergio
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...