Отсутствуя год заметил, что счетчик посещений некоторых страничек просто зашкаливает. Связано это, как выяснилось, с тем, что помимо реальных пользователей страничка генерируется и для поисковых ботов. Поэтому была нужна функция, которая бы определяла идет текущий запрос к странице от бота или от пользователя. Используя HTTP_USER_AGENT, можно узнать, если страница посещается ботом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function isBot(& $botname = '' ){ /* Эта функция будет проверять, является ли посетитель роботом поисковой системы */ $bots = array ( 'rambler' , 'googlebot' , 'aport' , 'yahoo' , 'msnbot' , 'turtle' , 'mail.ru' , 'omsktele' , 'yetibot' , 'picsearch' , 'sape.bot' , 'sape_context' , 'gigabot' , 'snapbot' , 'alexa.com' , 'megadownload.net' , 'askpeter.info' , 'igde.ru' , 'ask.com' , 'qwartabot' , 'yanga.co.uk' , 'scoutjet' , 'similarpages' , 'oozbot' , 'shrinktheweb.com' , 'aboutusbot' , 'followsite.com' , 'dataparksearch' , 'google-sitemaps' , 'appEngine-google' , 'feedfetcher-google' , 'liveinternet.ru' , 'xml-sitemaps.com' , 'agama' , 'metadatalabs.com' , 'h1.hrn.ru' , 'googlealert.com' , 'seo-rus.com' , 'yaDirectBot' , 'yandeG' , 'yandex' , 'yandexSomething' , 'Copyscape.com' , 'AdsBot-Google' , 'domaintools.com' , 'Nigma.ru' , 'bing.com' , 'dotnetdotcom' ); foreach ( $bots as $bot ) if ( stripos ( $_SERVER [ 'HTTP_USER_AGENT' ], $bot ) !== false){ $botname = $bot ; return true; } return false; } |
Использовать очень просто:
1 2 3 4 | if ( !isBot() ) $hits = $hits +1; // накручиваем счетчик если запрос не от бота // или так $bname = '' ; if ( isBot( $bname ) ) echo 'На сайте сейчас ' . $bname ; |
Комментарии
seo-kiev.com.ua/zahodi-botov-poiskovikov-yandex-google.html
$bname = '';
if( isBot($bname) ) echo 'На сайте сейчас '.$bname;
А в функции переменная называется $botname