Forum Webscript.Ru
Программирование => PHP => Тема начата: advanced от 08 Октября 2002, 01:48:21
-
Кто знает как сделать скрипт, который устанавливается на главную страницу сайта и меняет выберает страницу в зависимости от вероятного языка посетителя. При первичном заходе на страницу анализируются: языки броузера (ACCEPT_LANGUAGE), с какой страницы пришел посетитель (HTTP_REFERER), язык поискового запроса (если он пришел с поисковика), в какой доменной зоне находится его компьютер (по REMOTE_ADDR).
Пример:
Существует три папки(eng/rus/ger), как вы поняли каждая папка относится к своему языку!
Вот допустим заходит посетитель, а скрипт считывает его язык по умолчанию, доустим это английский и отправляет пользователя вот сюда eng/index.html
Пожалуйста, помогите!!
Зарание благодарен! :)
-
Я так и не понял с чем у тебя проблемы. Ты в сабже задал вопрос а в тексте сообщения сам описал ответ на него.
В php есть $HTTP_ACCEPT_LANGUAGE
Правда оно может принимать значение типа en-us (насколько я помню)
То есть нужно это значение разбивать на языки и каждое проверять.
Только папки назови по нормальному:
$langs = array("en","ru","de");
$cur_langs = explode("-",$HTTP_ACCEPT_LANGUAGE);
foreach ($cur_langs as $lang) {
if (in_array($lang, $langs) {
header("Location: ./".$lang."/index.php");
exit;
}
}
это примерный код.
-
Спасибо, но яхотел бы немного уточнить!
Я только начинаю изучать PHP, но мне срочно нужен этот скрипт!
Я понял так!
Скрипт определяет язык и перенаправляет в соответственную папку>>>index.php
А как он определяет язык!??? Вот этого я непойму!
Кстати:
if (in_array($lang, $langs) {
в этой строке выводит ошибку!
Я наверно что-то нетак создал! ??
Я создал папку в ней этот файл (index.php) и три папки (en,ru,de).
-----
Кстати, а если допусти человек из франции зайдёт, как отреагирует скрипт?
-
Если не ошибаюсь, то языки в $HTTP_ACCEPT_LANGUAGE идут через запятую... Но проверить не могу, так как у меня там только "ru"
С ошибкой - что пишет?
Вообще, сделай так:
$langs = array("en","ru","de");
$default_lang="ru";
$cur_langs = explode("-",$HTTP_ACCEPT_LANGUAGE);
if (is_array($cur_langs))
foreach ($cur_langs as $lang)
if (in_array($lang, $langs) {
header("Location: ./".$lang."/index.php");
exit;
}
header("Location: ./".$default_lang."/index.php");
-
Вот что пишет:
--
Parse error: parse error in c:\\program files\\apache group\\apache\\htdocs\\lang\\index.php on line 5
--
5-ая СТРОКА
------
if (in_array($lang, $langs) {
------
щяз попробую вторую версию!
А ты можешь описать немного скрипт, что он он делать?
Извени, за такие вопросы, я то осовное понимаю ну некоторые строки нет!
-
Я бы вообще не стал разбивать $HTTP_ACCEPT_LANGUAGE, а брал бы только два первых символа.
-
Я бы вообще не стал разбивать $HTTP_ACCEPT_LANGUAGE, а брал бы только два первых символа.
ну а вдруг первые 2 символа - язык, который не подерживается сайтом?
Доктор да, только что посмотрел NN через запятую возвращает en,ru .Хотя помоему я все-таки видел en-us (год назад, иогу ошибаться). en-us - это американский английски и возможно так разделяются "родственные" языки (типа "en-us","en-gb", "en-au"). А может я вообще что-то перепутал.
Тогда можно седлать скрипт примерно так:
$lang = $_SERVER[\'HTTP_ACCEPT_LANGUAGE\'];
if (stristr($lang,"ru")){
$lng="ru";
} elseif (stristr($lang,"en")){
$lng="en";
}
} elseif (stristr($lang,"de")){
$lng="de";
} else{
$lng="en"; // язык по умолчанию
}
header("Location: ./".$lng."/index.php");
-
Макс, извени, но пишет:
Parse error: parse error, unexpected \'}\' in /home/virtual/site89/fst/var/www/html/index.php on line 8
В этой строке
$lng="de";
-
$lang = $_SERVER[\'HTTP_ACCEPT_LANGUAGE\'];
if (stristr($lang,"ru")){
$lng="ru";
} elseif (stristr($lang,"en")){
$lng="en";
}
elseif (stristr($lang,"de")){
$lng="de";
} else{
$lng="en"; // язык по умолчанию
}
header("Location: ./".$lng."/index.php");
В том смысле, что там лишняя "}" стояла (в пред. строке).
-
Дмитрий Попов, спасибо большое - вроде работает!