PDA

Просмотр полной версии : Помогите с перенаправлением плиз!


artalex_2003
18.12.2003, 01:48
Очень нужно сделать скрипт, который будет определять язык броузера посетителя, и в зависимости от RU это или EN загружать соответствующую homepage/
Помогите пожалуйста, кто может!

Nirva
18.12.2003, 02:57
гляди. в файле ИЗ которого перенаправлять ставишь ссілку:
lang.php?lang=ru || lang.php?lang=en
сечешь?
едем дальше, файл ленг.пхп
<?php
switch ($_GET['lang'])
{
case "ru":{
$url = "./ru_page.html";
break;
}
case "./en_page.html": {
$url = "./en_page.html";
break;
}
defalt: {
$url = "./ru_page.html";
break;
}
header("Location: {$url}");
?>
типа того, но уверен не освсем верно так все ставить. я о разніх страницах. ну да ладно.

artalex_2003
18.12.2003, 03:17
Не то... надо автоматически. Вот это что за переменная?

$HTTP_ACCEPT_LANGUAGE
Можно ее использовать как то?

juggy
18.12.2003, 11:08
<?
$lang=strip_tags($_GET['lang']);

if(!$lang)
{
header("Location:/ru.html");
die();
}else{
header("Location:/".$lang.".html");
die();
}
?>
Имхо так правильнее, но всё равно язык можно определить только с помощью JS.

kompadre
18.12.2003, 22:40
$_SERVER["HTTP_ACCEPT_LANGUAGE"] можно использовать в полне. Искать в ней нужные языки "одно удовольствие" но это решимо.

Имхо так правильнее, но всё равно язык можно определить только с помощью JS.

Твой код немного неправилен. Начиная с того что $_GET["lang"] лучше проверять isset. Почему? Потому что эта переменная не должна ровняться false а ее попросту недолжно существовать.

Если делать то примерно так :
[PHP]isset ($_GET["lang"]) $to = $_GET["lang"] : $to = "rus.html";
header ("Location: ".$to); /* Никогда не оставляйте в переменной только часть значения!
Если в коде juggy надо будет перелезть на
чтонибудь .php, .html ... искать это */
// header("Location:/".$lang.".html");
/*в коде - геморрой. Кстати die () в конце
кода juggy не только не нужен но и вреден.
*/[PHP]

kompadre
18.12.2003, 22:56
Например вот так :
define ("LANGUAGE_DEFAULT", "ru");
foreach (Array("ru", "en") as $possible_language) {
if (strpos($_SERVER["HTTP_ACCEPT_LANGUAGE"], $possible_language)> -1)
$language = $possible_language;
}
if (!isset($language)) $language = LANGUAGE_DEFAULT;

убейте плиз предидущее сообщение - ответил не посмотрев на оригинальный вопрос.

artalex_2003
18.12.2003, 23:56
А я вот так сделал:
В корне лежит один файлик - index.php - вот он:
_________
<?
if($HTTP_ACCEPT_LANGUAGE=='ru') header ("Location: http://www.1gbhost.com/ru");
else
header ("Location: http://www.1gbhost.com/en");
?>
_______

И все работает... вроде... у меня... вот. :)
Проверьте плиз - при заходе англ. броузером и русским броузером по этому адресу - http://1gbhost.com

PS - Админу: Это не реклама, заказчики просили сделать именно так, вот мучаюсь...

Nirva
19.12.2003, 02:46
2kompadre: толково.
2artalex_2003: Opera7.23, en - английский
Осел6.01, ru - английский
по умолчанию системы - en.

Самурай
19.12.2003, 09:15
я единтвенные кто опредиляет не язык системы а IP геолакацию пользователя и подсовывает ему вариант ео страны?


ну ждите тюториала....

opex
19.12.2003, 15:32
а у тя есть эта зверская тобличка IP геолакаций

Gossip
19.12.2003, 18:04
вот тебе табличка с примерами:

http://ip-to-country.webhosting.info/