Статистика поисковых запросов php

Php скрипт статистики поисковых запросов

Итак, статистика поисковых запросов. На странице подраздела полезных php скриптов уже кратко расписано, что это такое и с чем его едят. Хотя можно и повториться. Статистика поисковых запросов это один из важных скриптов любого сайта. Существуем множество готовых скриптов статистики, куда входит и выше упомянутый элемент. Некоторые из них бесплатны, а некоторые требуют оплаты. Кроме того любой счетчик установленный на сайте также фиксирует поисковые запросы, историю которых можно просмотреть зайдя в свой аккаунт рейтинговой системы, счетчик которой установлен на сайте. Но извлечь определенной пользы для сайта из счетчиков рейтинговых систем не удастся. Ну, а бесплатные и платные скрипты статистики зачастую очень тяжеловесны и неповоротливы, страшно грузят сервер, что в нашем случае, для нашего минимально нагруженного сайтап росто неприемлимо. Поэтому долго не мудрствуя простейший скрипт статистики, который уже присутствует в проекте вполне можно дополнить логом статистики поисковых запросов. Как известно поисковый запоос находится в глобальной серверной переменной $_SERVER[‘HTTP_REFERER’] откуда его можно извлечь и распарсить. Проблема в том, что для разных поисковых систем сами запросы находятся в разных переменных и кроме того они могут быть представлены в различных кодировках. Учитывая это и составлен небольшой класс для распарсивания поискового запроса, представленный ниже.

Его родитель находится здесь. Но он усложнен еще и поиском страницы поиска, что совершенно лишнее и в нашем случае никакой полезной информации для администратора сайта, да и для самого сайта не даст. Если уж интересно, для того, чтобы посмотреть из какой страницы поисковой системы был выполнен переход достаточно будет кликнуть по самому запросу. Php скрипт класса можно добавлять и расширять для любой другой поисковой системы. Нужно только четко знать кодировку и переменную в которой содержится сам запрос. Ну например, вот запрос http://yandex.ru/yandsearch?rpt=rad&text=%D0%B7%D0%B0%D1%80%D0%B0%D0%B1%
D0%BE%D1%82%D0%BA%D0%B0%20%D0%B2%20%D0%B8%D0%BD%D1%82%D0%
B5%D1%80%D0%BD%D0%B5%D1%82%D0%B5%20%D0%BA%D0%B0%D0%BF%D1%
82%D1%87%D0%B0 Явно видно, что он находится в переменной $text. Поэтому с ней и нужно работать. Что касается кодировки, то в каждом отдельном случае она другая и это также необходимо учитывать.

Читайте также:  Html 64 bit terraria

Вот пример статистики поисковых запросов. Это текущая статистика поисковых запросов. Количество выводимых строк статистики можно устанавливать в .ini файле установок сайта. Обновленный таким образом php скрипт нашего проекта можно получить здесь. Все, что с ним необходимо сделать, чтобы его запустить на Денвере, оговаривалось ранее в конце многих предыдущих страниц данного раздела пошагового создания php сайта. Важное дополнение. Скрипт проекта, кроме всего выше описанного, претерпел важное изменение в части безопасности. Практически все скрипты перенесены в глобальную папку «data/» в которой они защищены файлом .htaccess.

Источник

Сборщик статистики поисковых запросов

Походив по интернету я не мог найти действительно стоящий скрипт на php для сбора поисковых запросов по которым ко мне приходили на сайт, по набрав там сям собрал как на мой взгяд очень даже не плохой скриптик который собирает всю статистику в отдельный файлик

, который в дальнейшем можно импортировать в сапу для покупки ссылок.

В скрипте реализован сбор поисковых запросов с 8 всем нам известных поисковиков

Список легко расширяем)), но думаю этого вполне достаточно.

У меня скрипт работает без ошибок! и да файл с поисковыми запросами сохраняется в кодировке windows-1251, так как я ее предпочитаю больше чем utf-8, и в формате

каждый новый запрос сохраняется с новой строчки.

Собсна сам скрипт: — сохраняет в кодировке win1251

  1. $Domain = strtolower($_SERVER[‘SERVER_NAME’]);
  2. if (is_int(strpos($_SERVER[‘SERVER_NAME’], «www.», 0)))
  3. $Domain = substr($_SERVER[‘SERVER_NAME’], 4);
  4. >
  5. define(‘StatFileName’, «searchwords.html»);
  6. function GetSearchText()
  7. $Result = »;
  8. if (isset($_SERVER[‘HTTP_REFERER’]))
  9. $Ref= $_SERVER[‘HTTP_REFERER’];
  10. if (!(empty($Ref)))
  11. $UrlArray = parse_url($Ref);
  12. if ( $UrlArray[‘scheme’] == ‘http’ )
  13. $RefHost = $UrlArray[‘host’];
  14. $IsGoogle = strpos($RefHost, ‘www.google.’);
  15. if (($RefHost == ‘search.msn.com’) ||
  16. ( is_int($IsGoogle) && ($IsGoogle == 0) ))
  17. parse_str($UrlArray[‘query’]);
  18. $Result=utf8_win($q);
  19. > elseif (($RefHost == ‘images.google.’)||($RefHost == ‘video.google.’)||($RefHost == ‘news.google.’))
  20. parse_str($UrlArray[‘query’]);
  21. $Result= utf8_win($q);
  22. > elseif (($RefHost == ‘www.bing.com’)||($RefHost == ‘bing.com’))
  23. parse_str($UrlArray[‘query’]);
  24. $Result= utf8_win($q);
  25. > elseif (($RefHost == ‘www.rambler.ru’)||($RefHost == ‘nova.rambler.ru’)||($RefHost == ‘news.rambler.ru’))
  26. parse_str($UrlArray[‘query’]);
  27. $Result= utf8_win($query);
  28. > elseif ($RefHost == ‘top100.rambler.ru’)
  29. parse_str($UrlArray[‘query’]);
  30. $Result= $query;
  31. > elseif (($RefHost == ‘go.mail.ru’)||($RefHost == ‘mail.ru’)||($RefHost == ‘soft.mail.ru’))
  32. parse_str($UrlArray[‘query’]);
  33. $Result= $q;
  34. > elseif (($RefHost == ‘yandex.ru’)||($RefHost == ‘www.yandex.ru’)||($RefHost == ‘www.ya.ru’)||($RefHost == ‘ya.ru’)||($RefHost == ‘images.yandex.ru’)||($RefHost == ‘news.yandex.ru’)||($RefHost == ‘blogs.yandex.ru’)||($RefHost == ‘video.yandex.ru’))
  35. parse_str($UrlArray[‘query’]);
  36. $Result = utf8_win($text);
  37. > elseif (($RefHost == ‘nigma.ru’)||($RefHost == ‘www.nigma.ru’))
  38. parse_str($UrlArray[‘query’]);
  39. $Result = utf8_win($s);
  40. > elseif (($RefHost == ‘qip.ru’)||($RefHost == ‘search.qip.ru’))
  41. parse_str($UrlArray[‘query’]);
  42. $Result = utf8_win($query);
  43. > elseif (($RefHost == ‘aport.ru’)||($RefHost == ‘sm.aport.ru’))
  44. parse_str($UrlArray[‘query’]);
  45. $Result = $r;
  46. > elseif (($RefHost == ‘pics.aport.ru’)||($RefHost == ‘audio.aport.ru’)||($RefHost == ‘video.aport.ru’))
  47. parse_str($UrlArray[‘query’]);
  48. $Result = utf8_win($r);
  49. >>>>
  50. if (!empty($Result))
  51. $Result = ».$Result.» \r\n»;
  52. >
  53. return $Result;
  54. >
  55. $SearchText = GetSearchText();
  56. echo $SearchText;
  57. if (!empty($SearchText))
  58. $fd = fopen( StatFileName, «a» );
  59. fputs ($fd , «$SearchText\n»);
  60. fclose( $fd );
  61. >
  62. function utf8_win($s)
  63. $s=strtr($s,array(«\xD0\xB0″=>»а», «\xD0\x90″=>»А», «\xD0\xB1″=>»б», «\xD0\x91″=>»Б»,
  64. «\xD0\xB2″=>»в», «\xD0\x92″=>»В», «\xD0\xB3″=>»г», «\xD0\x93″=>»Г», «\xD0\xB4″=>»д»,
  65. «\xD0\x94″=>»Д», «\xD0\xB5″=>»е», «\xD0\x95″=>»Е», «\xD1\x91″=>»ё», «\xD0\x81″=>»Ё»,
  66. «\xD0\xB6″=>»ж», «\xD0\x96″=>»Ж», «\xD0\xB7″=>»з», «\xD0\x97″=>»З», «\xD0\xB8″=>»и»,
  67. «\xD0\x98″=>»И», «\xD0\xB9″=>»й», «\xD0\x99″=>»Й», «\xD0\xBA»=>»к», «\xD0\x9A»=>»К»,
  68. «\xD0\xBB»=>»л», «\xD0\x9B»=>»Л», «\xD0\xBC»=>»м», «\xD0\x9C»=>»М», «\xD0\xBD»=>»н»,
  69. «\xD0\x9D»=>»Н», «\xD0\xBE»=>»о», «\xD0\x9E»=>»О», «\xD0\xBF»=>»п», «\xD0\x9F»=>»П»,
  70. «\xD1\x80″=>»р», «\xD0\xA0″=>»Р», «\xD1\x81″=>»с», «\xD0\xA1″=>»С», «\xD1\x82″=>»т»,
  71. «\xD0\xA2″=>»Т», «\xD1\x83″=>»у», «\xD0\xA3″=>»У», «\xD1\x84″=>»ф», «\xD0\xA4″=>»Ф»,
  72. «\xD1\x85″=>»х», «\xD0\xA5″=>»Х», «\xD1\x86″=>»ц», «\xD0\xA6″=>»Ц», «\xD1\x87″=>»ч»,
  73. «\xD0\xA7″=>»Ч», «\xD1\x88″=>»ш», «\xD0\xA8″=>»Ш», «\xD1\x89″=>»щ», «\xD0\xA9″=>»Щ»,
  74. «\xD1\x8A»=>»ъ», «\xD0\xAA»=>»Ъ», «\xD1\x8B»=>»ы», «\xD0\xAB»=>»Ы», «\xD1\x8C»=>»ь»,
  75. «\xD0\xAC»=>»Ь», «\xD1\x8D»=>»э», «\xD0\xAD»=>»Э», «\xD1\x8E»=>»ю», «\xD0\xAE»=>»Ю»,
  76. «\xD1\x8F»=>»я», «\xD0\xAF»=>»Я»));
  77. return $s;
  78. >
  79. ?>

Что то не пошло у меня в кодировке 1251 на wordpress((, пришлось переделать все в utf8.

Вот скрипт: сохраняет поисковые запросы в кодировке utf-8

  1. $Domain = strtolower($_SERVER[‘SERVER_NAME’]);
  2. if (is_int(strpos($_SERVER[‘SERVER_NAME’], «www.», 0)))
  3. $Domain = substr($_SERVER[‘SERVER_NAME’], 4);
  4. >
  5. define(‘StatFileName’, «searchwords.html»);
  6. function win_utf8($in_text)
  7. $output = «»;
  8. $other[1025] = «Ё»;
  9. $other[1105] = «ё»;
  10. $other[1028] = «Є»;
  11. $other[1108] = «є»;
  12. $other[1030] = «I»;
  13. $other[1110] = «i»;
  14. $other[1031] = «Ї»;
  15. $other[1111] = «ї»;
  16. for ($i = 0; $i < strlen($in_text); $i++)
  17. if (ord($in_text) > 191)
  18. $output.=»&#».(ord($in_text)+848).»;»;
  19. >else
  20. if (array_search($in_text, $other)===false)
  21. $output.=$in_text;
  22. >else
  23. $output.=»&#».array_search($in_text, $other).»;»;
  24. >
  25. >
  26. >
  27. return $output;
  28. >
  29. function GetSearchText()
  30. $Result = »;
  31. if (isset($_SERVER[‘HTTP_REFERER’]))
  32. $Ref= $_SERVER[‘HTTP_REFERER’];
  33. if (!(empty($Ref)))
  34. $UrlArray = parse_url($Ref);
  35. if ( $UrlArray[‘scheme’] == ‘http’ )
  36. $RefHost = $UrlArray[‘host’];
  37. $IsGoogle = strpos($RefHost, ‘www.google.’);
  38. if (($RefHost == ‘search.msn.com’) ||
  39. ( is_int($IsGoogle) && ($IsGoogle == 0) ))
  40. parse_str($UrlArray[‘query’]);
  41. $Result= $q;
  42. > elseif (($RefHost == ‘images.google.’)||($RefHost == ‘video.google.’)||($RefHost == ‘news.google.’))
  43. parse_str($UrlArray[‘query’]);
  44. $Result= $q;
  45. > elseif (($RefHost == ‘www.bing.com’)||($RefHost == ‘bing.com’))
  46. parse_str($UrlArray[‘query’]);
  47. $Result= $q;
  48. > elseif (($RefHost == ‘www.rambler.ru’)||($RefHost == ‘nova.rambler.ru’)||($RefHost == ‘news.rambler.ru’))
  49. parse_str($UrlArray[‘query’]);
  50. $Result= $query;
  51. > elseif ($RefHost == ‘top100.rambler.ru’)
  52. parse_str($UrlArray[‘query’]);
  53. $Result= win_utf8($query);
  54. > elseif (($RefHost == ‘go.mail.ru’)||($RefHost == ‘mail.ru’)||($RefHost == ‘soft.mail.ru’))
  55. parse_str($UrlArray[‘query’]);
  56. $Result= win_utf8($q);
  57. > elseif (($RefHost == ‘yandex.ru’)||($RefHost == ‘www.yandex.ru’)||($RefHost == ‘www.ya.ru’)||($RefHost == ‘ya.ru’)||($RefHost == ‘images.yandex.ru’)||($RefHost == ‘news.yandex.ru’)||($RefHost == ‘blogs.yandex.ru’)||($RefHost == ‘video.yandex.ru’)||($RefHost == ‘m.yandex.ru’))
  58. parse_str($UrlArray[‘query’]);
  59. $Result = $text;
  60. > elseif (($RefHost == ‘yandex.kz’)||($RefHost == ‘www.yandex.kz’)||($RefHost == ‘www.ya.kz’)||($RefHost == ‘ya.kz’)||($RefHost == ‘images.yandex.kz’)||($RefHost == ‘news.yandex.kz’)||($RefHost == ‘blogs.yandex.kz’)||($RefHost == ‘video.yandex.kz’)||($RefHost == ‘m.yandex.kz’))
  61. parse_str($UrlArray[‘query’]);
  62. $Result = $text;
  63. > elseif (($RefHost == ‘nigma.ru’)||($RefHost == ‘www.nigma.ru’))
  64. parse_str($UrlArray[‘query’]);
  65. $Result = $s;
  66. > elseif (($RefHost == ‘qip.ru’)||($RefHost == ‘search.qip.ru’))
  67. parse_str($UrlArray[‘query’]);
  68. $Result = $query;
  69. > elseif (($RefHost == ‘aport.ru’)||($RefHost == ‘sm.aport.ru’))
  70. parse_str($UrlArray[‘query’]);
  71. $Result = win_utf8($r);
  72. > elseif (($RefHost == ‘pics.aport.ru’)||($RefHost == ‘audio.aport.ru’)||($RefHost == ‘video.aport.ru’))
  73. parse_str($UrlArray[‘query’]);
  74. $Result = $r;
  75. >>>>
  76. if (!empty($Result))
  77. $Result = ».$Result.»$RefHost \r\n»;
  78. >
  79. return $Result;
  80. >
  81. $SearchText = GetSearchText();
  82. echo $SearchText;
  83. if (!empty($SearchText))
  84. if (!file_exists(StatFileName)) $SearchText = «\xEF\xBB\xBF». $SearchText;
  85. $fd = fopen( StatFileName, «a» );
  86. fputs ($fd , «$SearchText\n»);
  87. fclose( $fd );
  88. >
  89. ?>

Сразу предупреждаю скрипт только доработан мною, сам я в php не силен, иногда полный дуб)), но если посидеть покопаться то бывает что, что то хорошее и получается сделать.

Еще записи по теме

Комментариев: 5

Добрый вечер. Спасибо за скрипт, он мегаполезен. Я сейчас его тестирую и у меня возникли вопросы. Почему скрипт не отлавливает переходы google.com.ua и yandex.ua? Яндекс.уа у меня получилось добавить, а вот укргугл, так и не отображается в статистике. Как добавить? У меня есть к Вам просьба. Если есть возможность – модифицируйте скрипт, чисто для гугла и яндекса (ру и укр), остальные ПС не представляю ценности (ИМХО).

Заметил, что примерно половина запросов сохраняется в кодировке win1251 и в списке они выглядят знаками вопросов.

это старый вариант скрипта, я его переделал 100500раз и сделал для него админку http://www.keblog.ru/page/skript-statistiki-poiskovyh-zaprosov здесь смотрите))))

Народ а не подскажете, при работе скрипт может имитировать пользователя за компом, т.е. поочередно выдавать поисковые запросы например в гугл или яндекс, таким образом:подал запрос получил от поисковика выборку в сообветствии с запросом, затем стер старый запрос набрал новый снова получил выборку и т.д.?

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

Источник

Оцените статью