|
| |
|
|
| |
для: Eugene77
(04.10.2007 в 19:17)
| | | Ну, если советом помочь не получается, то может быть кто-нибудь скинет мне сюда
образцы строк, которые оставляют ACCEPT_LANGUEGE и.
Ведь если есть доступ к мультиязычному сайту, то насобирать несложно
Штук 100-200 хотя бы разных.
Я сам проверю свою функцию. | |
| |
|
|
| |
|
|
| |
для: Eugene77
(03.10.2007 в 16:42)
| | | Проблема в том, что я даже потестировать его нормально не могу.
На моих двух браузерах работает,
но разве это показатель?!
Очень хотелось бы мнение ваше услышать,
тем более, что я сильно не уверен в правильности своего понимания
того, что в ссылке Трианона написано.
Что-то не возникло у меня ясной картины от прочитанного.
Вот если бы кто-то простыми словами объяснил... | |
| |
|
|
| |
|
|
| |
для: Unreal
(19.09.2007 в 21:25)
| | | Спасибо за интересный код!
Однако сама проверка на предпочтения браузера вызывает сомнения.
А что если там много чего написано?
Мне вот что в голову пришло:
$language='ru';
$language_value=0;
//Функция определяет предпочтительный язык
//из числа доступных в переменной $present_languages
// Ей и отдаём строку acceptable language
function http_language($http_str){
global $language;
global $language_value;
$present_languages=array('ru','en','fr');
$l_q=explode(',',$http_str);
foreach($l_q as $value){
$q_val=0;
$l=explode(';',$value);
if(in_array(trim($l[0]),$present_languages)){
if(trim($l[1])=='') $q_val=1;
else{
$q=explode('=',$l[1]);
if(trim($q[0])=='q') {$q_val=floatval($q[1]);echo $q_val;}
}
}
if($q_val>$language_value){
$language=trim($l[0]);
$language_value=$q_val;
}
}
return $language;
}
|
Посмотрите, пожалуйста, кто соображает, наколько он полноценный, без слабых мест.
В каких случаях он мне выдаст ошибочный результат? | |
| |
|
|
| |
|
|
| |
для: Eugene77
(07.09.2007 в 17:50)
| | | Роботу выдавать обе нельзя, то что вы хотите таким образом делать называется "клоакинг", то есть браузеру отдаете одну страницу, боту другую, в результате таких действий весь ваш сайт могут забанить. Именно по этой причине боты поисковиков ходят иногда под юзерагентом обычного браузера.
Теперь по сути, мне одно время нужно было быстро реализовать что-то подобное, ниже код, он кривоватый, но в принципе работает. Он проверяет какой язык установлен предпочтительным у пользователя в настройках браузера, если это русский, украинский или беларусский, то ставится кука и пользователю отдается страница на русском, в противном случае на английском.
<?php
class language {
var $language;
function __construct() {
$this->language = "en";
}
function set_cookie($language) {
$domain = ($_SERVER['HTTP_HOST'] !== 'localhost') ? $_SERVER['HTTP_HOST'] : false;
setcookie('language', $language, time()+60*60*24*365, '/', $domain, false);
}
function check_cookie() {
if(isset($_COOKIE['language'])) {
$cookie = $_COOKIE['language'];
switch ($cookie) {
case $cookie == "russian":
$this->language = "ru";
break;
case $cookie == "english":
$this->language = "en";
break;
default:
$this->language = "en";
break;
}
} else {
if ($this->check_rus_language() !== 0) {
$this->set_cookie('russian');
$this->language = "ru";
}
$this->set_cookie('english');
$this->language = "en";
$cookie = '';
}
return $cookie;
}
function check_rus_language() {
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$accept_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$accept_lang = trim($accept_lang);
if (preg_match("/(be-by|ru|ru-ru|uk-ua)/i", $accept_lang, $match)) {
$lang = $match[0];
}
} else {
$lang = 0;
}
return $lang;
}
function set_language() {
header("http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}");
header('HTTP/1.1 200 OK');
$this->set_cookie("english");
}
function defined_language() {
return $this->language;
}
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Eugene77
(15.09.2007 в 19:20)
| | | Да сделай простой выбор языка.. =) | |
| |
|
|
| |
|
|
| |
для: tricket
(14.09.2007 в 20:10)
| | | А роботы вообще заголовки касательно языка посылают?
Если посылают, то часто ли? Кто-нибудь проверял? | |
| |
|
|
| |
|
|
| |
для: mihdan
(14.09.2007 в 17:35)
| | | ну забанить то не забанят... но с СЕО точки зрения лучше так не делать...
поисковые боты обидчивые твари и иногда эмулируют реального пользователя(как браузер стандартный заголовки посылают)... | |
| |
|
|
| |
|
|
| |
для: Loki
(12.09.2007 в 15:31)
| | | НЕТ | |
| |
|
|
| |
|
|
| |
для: Eugene77
(07.09.2007 в 17:50)
| | | А не забанят?
Если выяснится что роботу и клиенту отдают разные страницы... | |
| |
|
|
| |
|
|
| |
для: Eugene77
(07.09.2007 в 21:28)
| | | ну оставляют такие следы как GoogleBot | |
| |
|
|
|