Скрипт возвращает запрос по которому был переход на ваш сайт со всех известных поисковиков
Добавил: Amro   Дата: 07.12.2011 07:14

Скрипт возвращает запрос по которому был переход на ваш сайт со всех известных поисковиков, поисковик и страницу выдачи на которой есть ваш запрос. (подерживаются поисковики yandex, google, rambler, yahoo.com, go.mail.ru, aport.ru, nigma.ru, search.com, live.com, msn.com, aol.com) 

Описание скрипта: Вернет через символ | следующие параметры: (например так google|термины бальных танцев|21|20) 

  1. Поисковая система с которой пришли на ваш сайт 
  2. Запрос по которому пришли на ваш сайт 
  3. Страница выдачи (в зависимости от поисковика либо порядковый номер первого результата на странице, т.е. если выдается по 10 результатов на странице, то 41 означает 4 страницу выдачи). 
  4. Кол-во результатов на странице (если значение по умолчание не менялось будет пустым) 

Этот запрос очень удобно использовать для: 

  • ведения статистики 
  • выдачи полезной информации пользователю (например, при определенном запросе перемещать на нужную страницы или выводить подсказку) 
  • показывать в поисковой системе сайта запрос пользователя 
  • и т.д. 

Вызов скрипта: без параметров, например так echo getKeyWords(); 

Код:
# Возвращает запросы со всех поисковиков  
function getKeyWords(){  
  $q = $_SERVER['HTTP_REFERER'];  
  if(strlen($q)>0){  
    if(strpos($q,'yandex')>0)  
      return getKeyWord($q,'yandex.ru','text','p','numdoc');  
    else if(strpos($q,'google')>0)  
      return getKeyWord($q,'google','q','start','num');  
    else if(strpos($q,'rambler.ru')>0)  
      return getKeyWord($q,'rambler.ru','query','page','');  
    else if(strpos($q,'yahoo.com')>0)  
      return getKeyWord($q,'yahoo.com','p','b','n');  
    else if(strpos($q,'go.mail.ru')>0)  
      return getKeyWord($q,'go.mail.ru','q','sf','');  
    else if(strpos($q,'aport.ru')>0)  
      return getKeyWord($q,'aport.ru','r','p','');  
    else if(strpos($q,'nigma.ru')>0)  
      return getKeyWord($q,'nigma.ru','s','startpos','');  
    else if(strpos($q,'search.com')>0)  
      return getKeyWord($q,'search.com','q','nav','');  
    else if(strpos($q,'live.com')>0)  
      return getKeyWord($q,'live.com','q','first','');  
    else if(strpos($q,'search.msn.com')>0)  
      return getKeyWord($q,'search.msn.com','q','first','');  
    else if(strpos($q,'search.aol.com')>0)  
      return getKeyWord($q,'search.aol.com','query','page','');    
    else  
      return '';  
  }  
}  

# Возвращает запрос  
function getKeyWord($q,$find,$word,$page,$num){  
       $tmp = getParams($q,$word);  
       if(strlen($tmp)>0){  
           return $find.'|'.$tmp.'|'.getParams($q,$page).'|'.getPara  ms($q,$num);  
       }  
       return '';  
}  

# Возвращает параметр из HTTP_REFERER  
function getParams($q,$prm){  
       if(strlen($prm) == 0) return '';  
       $i = strpos($q,'&'.trim($prm).'=');  
       if($i == 0) $i = strpos($q,'?'.trim($prm).'=');         
       if($i > 0){  
         $tmp = substr($q,$i+strlen($prm)+2);  
         if(strpos($tmp,'&')>0) $tmp = substr($tmp,0,strpos($tmp,'&'));  
         $tmp = getStringUtf(urldecode($tmp));         
         return $tmp;           
       }  
       return '';  
} 

Взято с форума античат

Помню нечто-типа такого мутил для реферов в Seditio.

comments powered by HyperComments