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

Рубрика: Новости -> Скрипты -> php
Четверг, 19 ноября 2009 г.
Просмотров: 571
Подписаться на комментарии по RSS

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

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

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

вот их списочек: google

                 Yandex

                 mail

                 rambler

                 aport

                 bing бывший msn

                 qip

                 nigma

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

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

<a href="ссылка на которую пришли кнам">поисковый запрос</a>

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

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


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

.......Добавлено.....

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

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


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

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

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)