PDA

Просмотр полной версии : Подсчет и стата посещений ботов


M4g
08.01.2009, 01:01
1.Скрипт bot_count.php (инклудим в свою страницу)
<?php
if(eregi("googlebot|msn|yahoo",$HTTP_USER_AGENT))
{
//создаем файл со статой
if(!is_file('bot_log') || filesize('bot_log')==0)
{
$fp = @fopen("bot_log","w");
@flock ($fp, LOCK_EX);
@fputs($fp,"0|0|0\n0|0|0\n");
@flock ($fp, LOCK_UN);
@fclose($fp);
}
//считываем файл со статой
$arr_bot=file('bot_log');
$bot_count=$arr_bot[0];
$time_bot_count=$arr_bot[1];
$bot_count=explode('|',$bot_count);
$GOOGLE_COUNT=(int)$bot_count[0];
$YAHOO_COUNT=(int)$bot_count[1];
$MSN_COUNT=(int)$bot_count[2];
$time_bot_count=explode('|',$time_bot_count);
$GOOGLE_TIME=$time_bot_count[0];
$YAHOO_TIME=$time_bot_count[1];
$MSN_TIME=$time_bot_count[2];

//пишем гуглбота в стату
if(eregi("googlebot",$HTTP_USER_AGENT))
{
$str_to_log = (++$GOOGLE_COUNT).'|'.$YAHOO_COUNT.'|'.$MSN_COUNT."\n";
$str_to_log .= time().':::'.$PHP_SELF.'?'.$QUERY_STRING.':::'.$HT TP_USER_AGENT.':::'.$REMOTE_ADDR.'|'.$YAHOO_TIME.' |'.$MSN_TIME;
$fp = @fopen("bot_log","w");
@flock ($fp, LOCK_EX);
@fputs($fp,$str_to_log);
@flock ($fp, LOCK_UN);
@fclose($fp);
}

//пишем яху в стату
if(eregi("yahoo",$HTTP_USER_AGENT))
{
$str_to_log = $GOOGLE_COUNT.'|'.(++$YAHOO_COUNT).'|'.$MSN_COUNT."\n";
$str_to_log .= $GOOGLE_TIME.'|'.time().':::'.$PHP_SELF.'?'.$QUERY _STRING.':::'.$HTTP_USER_AGENT.':::'.$REMOTE_ADDR. '|'.$MSN_TIME;
$fp = @fopen("bot_log","w");
@flock ($fp, LOCK_EX);
@fputs($fp,$str_to_log);
@flock ($fp, LOCK_UN);
@fclose($fp);
}

//пишем мсн в стату
if(eregi("msn",$HTTP_USER_AGENT))
{
$str_to_log = $GOOGLE_COUNT.'|'.$YAHOO_COUNT.'|'.(++$MSN_COUNT)."\n";
$str_to_log .= $GOOGLE_TIME.'|'.$YAHOO_TIME.'|'.time().':::'.$PHP _SELF.'?'.$QUERY_STRING.':::'.$HTTP_USER_AGENT.':: :'.$REMOTE_ADDR;
$fp = @fopen("bot_log","w");
@flock ($fp, LOCK_EX);
@fputs($fp,$str_to_log);
@flock ($fp, LOCK_UN);
@fclose($fp);
}
}



2. Создаем файл stats.php
<html>
<title>Bots stat</title>
<body>
<p>
<?php

$data=file('bot_log');

if (!empty($data[0]))
{
$count=$data[0];
list($GOOGLE_COUNT,$YAHOO_COUNT,$MSN_COUNT)=explod e('|',$count);
$bots=$data[1];
list($GOOGLE_BOT,$YAHOO_BOT,$MSN_BOT)=explode('|', $bots);
print '<b>Google bot</b> был здесь <b><font color="red">'.$GOOGLE_COUNT.'</font></b> раз<br/>';
list($g_time,$g_path,$g_agent,$g_ip)=explode(':::' ,$GOOGLE_BOT);
print '<b>'.date('d.m.Y H:i:s',$g_time).'</b> '.$g_path.' <i>'.$g_agent.' ('.$g_ip.')</i>';
print '<hr/>';
list($y_time,$y_path,$y_agent,$y_ip)=explode(':::' ,$YAHOO_BOT);
print '<b>Yahoo bot</b> был здесь <b><font color="red">'.$YAHOO_COUNT.'</font></b> раз<br/>';
print '<b>'.date('d.m.Y H:i:s',$y_time).'</b> '.$y_path.' <i>'.$y_agent.' ('.$y_ip.')</i>';
print '<hr/>';
list($m_time,$m_path,$m_agent,$m_ip)=explode(':::' ,$MSN_BOT);
print '<b>MSN bot</b> был здесь <b><font color="red">'.$MSN_COUNT.'</font></b> раз<br/>';
print '<b>'.date('d.m.Y H:i:s',$m_time).'</b> '.$m_path.' <i>'.$m_agent.' ('.$m_ip.')</i>';
}
?>
</p>
</body>
</html>
3.Создаем файл bot_log и открываем на запись
---
Все) Теперь у вас есть подробная и простая стата по посещениям ботов основных поисковиков (по коду Яшу и иже с ними легко добавить самому)

Fepsis
08.01.2009, 01:15
Спасибо.. Не тестил пока, но скоро пригодится..)))

Ho5Tr1d3R
08.01.2009, 20:03
Спосибо, тестируем )

Tigger
08.01.2009, 20:08
Спасибо))
правь ошибки (3.Создаем файл bot_log b открываем на запись) - вместо "b" "и".
А разве bot_log не лучше с расширением .txt?

ZEXEL
08.01.2009, 20:29
Как я понял по коду тут токо 3 бота определяет ? Yahoo , Google , MSN ?
Еще б не плохо было добавить Yandex , mail.ru , Rambler !

M4g
12.01.2009, 02:08
>А разве bot_log не лучше с расширением .txt?
какая разница?) все равно ты его не вручную читаешь, а через stats.php
>Как я понял по коду тут токо 3 бота определяет ? Yahoo , Google , MSN ?
Еще б не плохо было добавить Yandex , mail.ru , Rambler !
не работал по Раше, добавь, это несложно)