В данной статье представлен PHP скрипт на базе которого легко можно будет создать модуль статистки поисковых запросов для своего сайта. Такой модуль может выуживать из поискового запроса, по которому пользователь попал на ваш сайт, название поисковой машины и собственно сам поисковый запрос. Все это можно накапливать в текстовой или другой базе с последующим выводом на какую-либо страницу сайта находящуюся в админпанели. Такая статистика очень полезна для админа сайта, поскольку дает полную картину посещаемости сайта из поисковиков. В дальнейшем все можно развить и привязать запросы к страницам сайта, что даст картину посещаемости каждой отдельной страницы из поисковых систем. Можно еще много рассуждать по этому поводу. Если короче то вот сам скрипт:
Как известно переход на сайт из поисковой машины хранится в суперглобале $_SERVER['HTTP_REFERER'] Поэтому запрос можно загрузить, например, в $refer
$refer = !empty($_SERVER['HTTP_REFERER'] ? strtolower($_SERVER['HTTP_REFERER']): 'None')
Далее будем работать с $refer из которой нужно выудить поисковый запрос и определить поисковую машину из которой был выполнен переход на сайт. Прежде чем выудить сам запрос нужно определить поисковую машину с которой он пришел, поскольку только тогда станет ясно в какой переменной переданной с запросом хранится сам текст запроса. Это легко сделать имея на вооружении матрицу или список поисковых машин. Такой список можно найти в Интернете в разных вариантах. Но мое внимание привлекла матрица поисковых машин такого вида:
$searchEngines=array( 'images.google.'=>array('q','prev'), 'bing.com'=>'q', '.alot.'=>'q', 'a993.com'=>'q1', 'abcsok.'=>'q', 'alltheweb.'=>'q', 'altavista.'=>'q', 'aol.'=>array('q','query','encquery'), 'aolsvc.'=>'query', 'avantfind.com'=>'keywords', 'bonvote.com'=>'search', 'bonweb.com'=>'search', 'comcast.net'=>'q', 'conduit.'=>'q', 'eniro.se'=>'search_word', 'excite.'=>'search', 'google.'=>array('q','as_q'), 'gogo.ru'=>'q', 'yandex.'=>array('text','query'), 'ya.ru'=>'text', 'hotbot.'=>'query', 'icerocket.com'=>'q', 'icq.com'=>'q', 'isheyka.com'=>'q', 'midco.net'=>'q', 'live.com'=>'q', 'msn.'=>'q', 'yahoo.'=>array('p','k'), 'search.'=>'q', 'kvasir.no'=>'q', 'myway.com'=>'searchfor', 'netscape.'=>array('q','query'), 'oceanfree.net'=>'as_q', 'qip.ru'=>'query', 'sweetim.com'=>'q', 'tut.by'=>'query', 'ukr.net'=>'search_query', 'search.oboz.ua'=>'k', 'search.www.infoseek.co.jp'=>'qt', '.setooz.com'=>'query', 'toile.com'=>'q', 'vinden.nl'=>'q', '.i.ua'=>'q', '.mail.ru'=>array('q','tag'), '.onru.ru'=>'q', 'aport.ru'=>'r', 'find.ru'=>'text', 'gde.ru'=>array('keywords','query','t','search_query','id'), 'go.km.ru'=>'sq', 'meta.ua'=>'q', 'metabot.ru'=>'st', 'nerus.ru'=>'query', 'nigma.ru'=>array('s','pq'), 'nova.rambler.ru'=>'query', 'poisk.ru'=>'text', 'protonet.ru'=>'q', 'rambler.ru'=>'words', 'tyndex.ru'=>'pnam', 'webalta.ru'=>'q', 'exactseek.com'=>array('q','query'), 'lycos.' => 'query', 'ask.' => 'q', 'cnn.' => 'query', 'looksmart.' => 'qt', 'about.' => 'terms', 'mamma.' => 'query', 'gigablast.' => 'q', 'voila.' => 'rdata', 'virgilio.' => 'qs', 'baidu.' => 'wd', 'alice.' => 'qs', 'najdi.' => 'q', 'club-internet.' => 'q', 'mama.' => 'query', 'seznam.' => 'q', 'netsprint.' => 'q', 'szukacz.' => 'q', 'yam.' => 'k', 'pchome.' => 'q', );
Если внимательно присмотреться то данная матрица устроена очень грамотно. В качестве ключей строки из части названий поисковых машин, а параметры - название (названия) переменных в которых передается текст запроса. Задача скрипта состоит в том, чтобы на базе содержимого $refer и выше представленной матрицы получить текст поискового запроса и название поисковой машины откуда был выполнен переход на ваш сайт. Ниже и представлен такой простейший скрипт, в котором в $site будет находиться название поисковика, а в $s_word текст поискового запроса.
$tmp = parse_url(urldecode(trim($refer))); $site = $tmp['host']; $str = $tmp['query']; parse_str($str,$arr); foreach ($searchEngines as $key=>$value) { if(substr_count($site, $key)) { foreach ($arr as $k=>$v) { if(is_array($value)) { if(in_array ("$k",$value)) {$s_word = $v; break;} } elseif("$k" == $value) {$s_word = $v; break;} else {$s_word = "None"; break;} } break; } }
Подобная методика и статистика поисковых запросов успешно реализована на php движке без баз Acvarif-CMS. Работает статистика без нареканий и дает кроме всего прочего, много всяких полезностей, - статистику посещения из поисковиков в количественном виде, статистику поисковых запросов по сайту вцелом и по каждой странице в отдельности и др. Достоинство такого варианта в его простоте и скорости работы.
Источник: webscript.ru