navolnah.com
na-volnah.com
napeske.com
vpeske.com
nalugu.com
Лично я для себя написал такую функцию (возможно это не рационально для сервера, но все же...):
/*
СОЗДАЕМ В БАЗЕ ТАБЛИЦУ
CREATE TABLE IF NOT EXISTS `bots` (
`bot_id` int(100) NOT NULL AUTO_INCREMENT,
`bot_name` varchar(30) NOT NULL,
`bot_page` varchar(30) NOT NULL,
`bot_date` datetime NOT NULL,
PRIMARY KEY (`bot_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
*/
// ДАЛЕЕ В ФАЙЛ ПОДКЛЮЧЕНИЯ К БАЗЕ ВНИЗУ ДОБАВЛЯЕМ:
// ПЕРЕМЕННЫЕ ДЛЯ ЗАПРОСОВ К БАЗЕ ДАННЫХ
$page = ""; // это переменная имени страницы, вы можете передавать ее любым способом
$query = "mysql_query";
$num_rows = "mysql_num_rows";
$assoc = "mysql_fetch_assoc";
// вычислить бота и записать в базу
$user_agent = $_SERVER['HTTP_USER_AGENT'];
// массив имен ботов (не рекомендуется более 5 имен)
$bot_name = Array("Googlebot", "Yandex", "MSNBot", "Mail.Ru");
// разворачиваем массив для проверки
foreach ($bot_name as $bots){
// функция проверки и записи в базу
check_bots($user_agent, $bots);
}
// вычисляем ботов
function check_bots($user_agent, $bot_name){
global $page, $query, $num_rows;
if(strpos($user_agent, $bot_name)!==false){
// проверим есть ли такая страница на сегодня
$day = date("Y m d");
// подготовим запрос
$sql = "SELECT bot_page
FROM bots
WHERE bot_name = '$bot_name'
AND bot_page = '$page'
AND DATE_FORMAT(bot_date, '%Y %m %d') = '$day'
LIMIT 1";
// вполним запрос
$check_query = $query($sql);
// если такая страница и бот уже есть то обновим
if($num_rows($check_query)!=false){
$sql = "UPDATE bots SET bot_date = NOW()
$query($sql);
// если нет то добавим
}else{
$sql = "INSERT INTO bots (bot_id, bot_name, bot_page, bot_date) VALUE ('', '$bot_name', '$page', NOW())";
// ТЕПЕРЬ ПРОСТО ПОЛУЧАЕМ СПИСОК БОТОВ, КОТОРЫХ ЗАСЕК НАШ СКРИПТ:
// показать ботов постранично
function bots_list($start, $limit){
global $query, $assoc;
global $dateformat, $offset;
$sql = "SELECT * FROM bots ORDER BY bot_id DESC LIMIT $start, $limit";
$bots_list_query = $query($sql);
while($row = $assoc($bots_list_query)){
$bots_list[] = Array('bot_id' => $row[bot_id],
'bot_name' => $row[bot_name],
'bot_page' => $row[bot_page],
'bot_date' => gmdate($dateformat, strtotime($row[bot_date])+$offset)
);
return $bots_list;
// ВЫЗЫВАЕМ ФУНКЦИЮ СПИСКА БОТОВ:
$bots_page = 100; // сколько последних ботов показать?
$bots_list = bots_list(0, $bots_page);
// ДАЛЕЕ РАЗВОРАЧИВАЕМ МАССИВ
foreach($bots_list as $bots){
print "$bots['bot_id'] $bots['bot_name'] $bots['bot_page'] $bots['bot_date']<br>";
// РЕЗУЛЬТАТ У МЕНЯ ТАКОЙ:
ИД входа Имя бота Страница Дата входа Опции
13 Googlebot users 22.04.2012 - в 11 час. 52 мин. Удалить
12 Yandex users 22.04.2012 - в 11 час. 46 мин. Удалить
11 Googlebot search 22.04.2012 - в 11 час. 27 мин. Удалить
10 Googlebot user_mobile 22.04.2012 - в 11 час. 52 мин. Удалить
9 Googlebot 404 22.04.2012 - в 11 час. 38 мин. Удалить
7 Yandex top 22.04.2012 - в 11 час. 05 мин. Удалить
Привет, если еще интересно, давай обсудим в ICQ 4279828. Есть готовое решение встроенное в мой движок клона мамбы. Сам двиг можешь приобрести здесь