Как получить в переменную запрос, по которому пришел человек с Яндекса?

Тема в разделе "PHP", создана пользователем Raccoon, 30 апр 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    172
    Симпатии:
    9
    PHP-программеры, привет!

    Помогите пожалуйста, очень требуется ваш совет.

    Как мне получить в переменную запрос по которому пришел человек из поисковой системы? Например, с Яндекса?

    Т.е. человек набрал в поиске "где купить пиво?" и перешел на мой сайт. Мне надо чтобы было:

    $var = "где купить пиво?"

    Как так сделать?.. Подскажите, заранее благодарен
     
  2. masto

    masto Прохожие

    Смотреть заголовок REFERER.
     
  3. alexloobb

    alexloobb

    Регистр.:
    27 сен 2006
    Сообщения:
    165
    Симпатии:
    50
    $HTTP_REFERER даст урл страницы, с которой пришел
    напр _http://www.yandex.ru/yandsearch?text=kak+kupit+pivo
    ну а дальше выдрать запрос дело техники
     
  4. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    172
    Симпатии:
    9
    а как вырезать text="$text" ??
     
  5. sms-send

    sms-send Создатель

    Регистр.:
    7 июл 2007
    Сообщения:
    29
    Симпатии:
    9
    PHP:
    if(isset($_SERVER['HTTP_REFERER']) && preg_match('~^http://(?:www\\.)?yandex\\.ru/yandsearch\\?(.*)$~i'$_SERVER['HTTP_REFERER'], $m))
        foreach(
    explode('&'$m[1]) as $v){
            list(
    $name$value) = explode('='$v2);
            if(
    $name == 'text'){
                
    $yand_query urldecode($value);
                echo 
    'Вы нашли нас по запросу: ' htmlspecialchars($yand_query);
                break;
            }
        }
     
    Lifter72 и Raccoon нравится это.
  6. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Ну а вот нечто наподобие фиксирования янд_гостей на базе предыдущего кода:
    if(isset($_SERVER['HTTP_REFERER']) && preg_match ('~^http://(?:www\\.)?yandex\\.ru/yandsearch\\?(.*)$ ~i', $_SERVER['HTTP_REFERER'], $m))
    foreach(explode('&', $m[1]) as $v){
    list($name, $value) = explode('=', $v, 2);
    if($name == 'text'){
    $yand_query = urldecode($value);
    $fh=fopen("yand_stats.txt", a+);
    fwrite($fh, htmlspecialchars($ yand_query)."\r\n");
    fclose($fh);
    break;
    } }
     
  7. ziavra

    ziavra Постоялец

    Регистр.:
    14 сен 2006
    Сообщения:
    123
    Симпатии:
    55
    PHP:
    function GetRefererKeyWords($referer$SiteURL)
    {
        
    $RefUrl urldecode($referer);
        if ((
    $RefUrl!='') and (!stristr ($RefUrl$SiteURL)))
        {
            
    $sw='';
            if    (
    stristr($RefUrl'google.'))        $sw='q=';
            elseif(
    stristr($RefUrl'search.msn.com'))    $sw='q=';
            elseif(
    stristr($RefUrl'search.live.com'))    $sw='q=';
            elseif(
    stristr($RefUrl'search.yahoo.com'))    $sw='p=';
            elseif(
    stristr($RefUrl'altavista.com'))    $sw='q=';
            elseif(
    stristr($RefUrl'search.aol.co'))    $sw='query=';
            elseif(
    stristr($RefUrl'lycos.'))        $sw='query=';
            elseif(
    stristr($RefUrl'alexa.com'))        $sw='q=';
            elseif(
    stristr($RefUrl'alltheweb.com'))    $sw='q=';
            elseif(
    stristr($RefUrl'netscape.'))        $sw='s=';
            elseif(
    stristr($RefUrl'www.search.com'))    $sw='q=';



            if(
    $sw != '')
            {
                
    eregi ($sw.'([^&]*)'$RefUrl.'&'$RefUrl);
                return 
    trim($RefUrl[1]);
            }
        }
        return 
    '';
    }
    Вызов например так:
    $RefKW = GetRefererKeyWords($_SERVER['HTTP_REFERER'], $SiteURL);

    Для яндекса надо добавить что-то типа
    elseif(stristr($RefUrl, 'alltheweb.com')) $sw='text=';
    Для других поисковиков соответственно.
     
Статус темы:
Закрыта.