Как узнать по какому слову ко мне пришли с поисковика?

  • Автор темы Автор темы KotoMax
  • Дата начала Дата начала

KotoMax

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

Всем привет!
Пытаюсь написать небольшую систему статистики для моего сайта. Возник вопрос: как узнать по какому поисковому слову ко мне пришли с поисковика (яндекса, рамблера и т.д.).

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

Посмотри у самых популярных поисковиках, впиши возможные варианты, и все.
 
Я же и говорю - тебе придется держать информационную таблицу для разных поисковиков с наименованиями GET переменных в которых содержится строка поиска.

Кстати, эту таблицу можно использовать так же для хранения дополнительной инфы по поисковику. И в своих статистических отчетах по строкам поиска группировать их по поисковикам.

А какие поисковики туда залить, тебе поможет google. Где - то был обновляемый список наиболее популярных поисковиков. Берешь первую десятку - думаю хватит...
 
PHP:
// ...
//// (C) я
function register_referer()
 {  // yandex, google, msn, mail, aport, rambler, yahoo, km, altavista
  require_once CORE_PATH.'core-charset-detect.php';
  if (!is_empty($ref = gpcvar_str($_SERVER['HTTP_REFERER'])))
  {
   $uri = parse_url($ref);
   $host = isset($uri['host'])?strtolower($uri['host']):'';
   parse_str($a = gpcvar_str($uri['query']),$query);
   if (preg_match('~\.yandex\.ru$~',$host)) {$search_query = gpcvar_str($query['text']);}
   elseif (preg_match('~^(www\.google\.|search\..*?\.msn.com)$~',$host)
			or $host == 'www.altavista.com'
			or $host == 'go.mail.ru'
   ) {$search_query = gpcvar_str($query['q']);}
   elseif ($host == 'sm.aport.ru') {$search_query = gpcvar_str($query['r']);}
   elseif ($host == 'www.rambler.ru') {$search_query = gpcvar_str($query['words']);}
   elseif ($host == 'go.km.ru') {$search_query = gpcvar_str($query['sq']);}
   elseif ($host == 'search.yahoo.com') {$search_query = gpcvar_str($query['p']);}
   else {$search_query = '';}
   $search_query = charset_x_win($search_query);
   xE::$db->insert(SQL_TBLPREFIX.'webstat_referers',array(
    'url'			=> array($ref,FIELDTYPE_CHAR,256),
    'host'			=> array($host,FIELDTYPE_CHAR,50),
    'search_query'	=> array($search_query,FIELDTYPE_CHAR,50)
   ));
  }
 }
// ...
 
WP

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

Правда, лишний запрос... Ну, короче KotoMax сам разберет что ему надо.
 
bankomat
No comments...
Groove
Меня устраивает. Тот кто хочет пусть сделает массив.
 
WP, спасибо за пример кода.
Кому интересно, совершеннос лучайно наткнулся сегодня на скрипт определяющий поисковые фразы с Рамблера и Яндекса, только у меня он почему-то не захотел работать :(

PHP:
<? $page=ceil($page);
if(strstr($HTTP_REFERER, "http://www.rambler.ru/srch?")){ 
$refref=$HTTP_REFERER; 
$refref=substr($refref,strpos($refref,"word"));
$refref=substr($refref,6,strpos($refref,"&"));
$cup=strpos($refref,"&");
$refref=substr($refref,0,$cup); 
$refref=rawurldecode($refref); 
$refref=trim(str_replace("+"," ",$refref));
} 

if(strstr($HTTP_REFERER, "yandex")){ 
$refref=$HTTP_REFERER; 
$refref=substr($refref,strpos($refref,"text=")); 

$refref=substr($refref,5,strpos($refref,"&"));
$cup=strpos($refref,"&");
$refref=substr($refref,0,$cup); 
$refref=rawurldecode($refref); 
$refref=trim(str_replace("+"," ",$refref));

echo "$refref";
} ?>
 
Сверху