Лет 5 назад сделал на Perl систему статистики, очень простенькую, просто данные о посещении укладывались в одну таблицу.
CREATE TABLE IF NOT EXISTS `statistics` (
`id` int(10) unsigned NOT NULL auto_increment,
`yy` int(4) unsigned zerofill default NULL,
`mm` int(2) unsigned zerofill default NULL,
`dd` int(2) unsigned zerofill default NULL,
`in_time` varchar(8) default NULL,
`ip` varchar(15) default NULL,
`page_curr` varchar(25) default NULL,
`page_from` varchar(255) default NULL,
`browser` varchar(255) default NULL,
PRIMARY KEY (`id`)
)
За 5 лет иногда смотрел эту статистику, т.к. достаточно быстро записей становилось много - конечно чистил таблицу.
И вот сейчас созрела необходимость вытащить все поисковые запросы из поля page_from, если пользователь пришел из гугла, то в этом поле будет ссылка по типу: http://www.google.com/search?q=%D1%80%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BA%D0%B0%D0%BF%D1%82%D1%87%D0%B8&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox
Провозился пару часов и родилась функция:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | function detect_search_engine($url) { $search_engines=Array( Array("name"=>"Mail", "pattern"=>"go.mail.ru/search_images", "param"=>"q", "charset"=>"w"), Array("name"=>"Mail", "pattern"=>"go.mail.ru", "param"=>"q", "charset"=>"w"), Array("name"=>"Google Images", "pattern"=>"images.google.", "param"=>"q", "charset"=>"u"), Array("name"=>"Google", "pattern"=>"google.", "param"=>"q", "charset"=>"u"), Array("name"=>"Google", "pattern"=>"google.", "param"=>"as_q", "charset"=>"u"), Array("name"=>"Live Search", "pattern"=>"search.live.com", "param"=>"q", "charset"=>"u"), Array("name"=>"Bing", "pattern"=>"bing.", "param"=>"q", "charset"=>"u"), Array("name"=>"RapidShare Search Engine", "pattern"=>"rapidshare-search-engine", "param"=>"s", "charset"=>"u"), Array("name"=>"Rambler", "pattern"=>"rambler.ru", "param"=>"query", "charset"=>"u"), Array("name"=>"Rambler", "pattern"=>"rambler.ru", "param"=>"words", "charset"=>"u"), Array("name"=>"Yahoo!", "pattern"=>"search.yahoo.com", "param"=>"p", "charset"=>"u"), Array("name"=>"Nigma", "pattern"=>"nigma.ru/index.php", "param"=>"s", "charset"=>"u"), Array("name"=>"Nigma", "pattern"=>"nigma.ru/index.php", "param"=>"q", "charset"=>"u"), Array("name"=>"MSN", "pattern"=>"search.msn.com/results", "param"=>"q", "charset"=>"u"), Array("name"=>"Ask", "pattern"=>"ask.com/web", "param"=>"q", "charset"=>"u"), Array("name"=>"QIP", "pattern"=>"search.qip.ru/search", "param"=>"query", "charset"=>"u"), Array("name"=>"RapidAll", "pattern"=>"rapidall.com/search.php", "param"=>"query", "charset"=>"u"), Array("name"=>"Yandex", "pattern"=>"images.yandex.ru/", "param"=>"text", "charset"=>"u"), Array("name"=>"Yandex", "pattern"=>"m.yandex.ru/search", "param"=>"query", "charset"=>"u"), Array("name"=>"Yandex", "pattern"=>"hghltd.yandex.net", "param"=>"text", "charset"=>"u"), Array("name"=>"Yandex", "pattern"=>"yandex.ru", "param"=>"text", "charset"=>"u") ); $tmp = parse_url($url); $host = $tmp['host']; $query = $tmp['query']; parse_str($query, $query_arr); $res['engine'] = '-'; $res['request'] = '-'; foreach ($search_engines as $engine) { if (strpos($host,$engine['pattern']) !== false and isset($query_arr[$engine['param']])) { $res['engine'] = $engine['name']; $res['request'] = $query_arr[$engine['param']]; break; } } return $res; } |
Функция принимает урл станички с которой перешли на ваш сайт, возвращает массив содержащий название поисковика и запрос по которому нашли ваш сайт.
Собственно самое полезное в этой функции массив $search_engines.
Теги: Поисковые системы
RSS подписка
Email подписка
September 10th, 2009 at 1:17 pm
В Google Analytics это всё есть и отображается в красивом виде
November 25th, 2009 at 8:05 am
Многих поисковых систем нет, даже к примеру search.yahoo.ru, и такого подомного много. Так что думаю правильней будет, через регулировку проверять поисковую систему
January 29th, 2010 at 4:44 pm
А я cnstats использую, ну и что? Тут о другом речь идет