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

KotoMax

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

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

В поиске искал, но не нашел.. если пропустил и эта тема уже обсуждалась -- ткните носом пожалуйста.
 

bankomat

Новичок
Причем не забудь, что у разных поисковиков строка поиска присваиваивается переменным с разными наименованиями.
 

Апокалипсис

тех дир matras.ru
Обычно у многих поисковиков это text=поисковое слово

Посмотри у самых популярных поисковиках, впиши возможные варианты, и все.
 

bankomat

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

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

А какие поисковики туда залить, тебе поможет google. Где - то был обновляемый список наиболее популярных поисковиков. Берешь первую десятку - думаю хватит...
 

WP

^_^
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)
   ));
  }
 }
// ...
 

bankomat

Новичок
WP

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

Правда, лишний запрос... Ну, короче KotoMax сам разберет что ему надо.
 

WP

^_^
bankomat
No comments...
Groove
Меня устраивает. Тот кто хочет пусть сделает массив.
 

KotoMax

Новичок
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";
} ?>
 
Сверху