Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Выдача страниц на разных языках

Сообщения:  [1-10]    [11-20]  [21-22] 

 
 автор: Eugene77   (06.10.2007 в 18:25)   письмо автору
 
   для: Eugene77   (04.10.2007 в 19:17)
 

Ну, если советом помочь не получается, то может быть кто-нибудь скинет мне сюда
образцы строк, которые оставляют ACCEPT_LANGUEGE и.
Ведь если есть доступ к мультиязычному сайту, то насобирать несложно
Штук 100-200 хотя бы разных.
Я сам проверю свою функцию.

   
 
 автор: Eugene77   (04.10.2007 в 19:17)   письмо автору
 
   для: Eugene77   (03.10.2007 в 16:42)
 

Проблема в том, что я даже потестировать его нормально не могу.
На моих двух браузерах работает,
но разве это показатель?!
Очень хотелось бы мнение ваше услышать,
тем более, что я сильно не уверен в правильности своего понимания
того, что в ссылке Трианона написано.
Что-то не возникло у меня ясной картины от прочитанного.
Вот если бы кто-то простыми словами объяснил...

   
 
 автор: 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;
}

Посмотрите, пожалуйста, кто соображает, наколько он полноценный, без слабых мест.
В каких случаях он мне выдаст ошибочный результат?

   
 
 автор: Unreal   (19.09.2007 в 21:25)   письмо автору
 
   для: 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'$languagetime()+60*60*24*365'/'$domainfalse);
    }
    
    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;
    }
    
}
?>

   
 
 автор: ProtoTeeP   (15.09.2007 в 19:54)   письмо автору
 
   для: Eugene77   (15.09.2007 в 19:20)
 

Да сделай простой выбор языка.. =)

   
 
 автор: Eugene77   (15.09.2007 в 19:20)   письмо автору
 
   для: tricket   (14.09.2007 в 20:10)
 

А роботы вообще заголовки касательно языка посылают?
Если посылают, то часто ли? Кто-нибудь проверял?

   
 
 автор: tricket   (14.09.2007 в 20:10)   письмо автору
 
   для: mihdan   (14.09.2007 в 17:35)
 

ну забанить то не забанят... но с СЕО точки зрения лучше так не делать...
поисковые боты обидчивые твари и иногда эмулируют реального пользователя(как браузер стандартный заголовки посылают)...

   
 
 автор: mihdan   (14.09.2007 в 17:35)   письмо автору
 
   для: Loki   (12.09.2007 в 15:31)
 

НЕТ

   
 
 автор: Loki   (12.09.2007 в 15:31)   письмо автору
 
   для: Eugene77   (07.09.2007 в 17:50)
 

А не забанят?
Если выяснится что роботу и клиенту отдают разные страницы...

   
 
 автор: bronenos   (07.09.2007 в 22:01)   письмо автору
 
   для: Eugene77   (07.09.2007 в 21:28)
 

ну оставляют такие следы как GoogleBot

   

Сообщения:  [1-10]    [11-20]  [21-22] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования