<?php
/*
простой текстовый счетчик на файле
*автор: nc_soft
16.06.07
*/
$ua = $_SERVER [ 'HTTP_USER_AGENT' ]; //браузер
$ip = $_SERVER [ 'REMOTE_ADDR' ]; //ip
$uniq = serialize ( array( $ip , $ua )). " \n " ; //упакованные данные
$store = './counter/counter.dat' ; //файл-хранилище, права 666 и выше
$offset = 8 * 3600; //смещение по времени в секундах (у моего хостера +8 часов от Москвы)
$date_now = date( 'd' , time ()+ $offset ); //сегодняшнее число
$date_access = date ( 'd' , filemtime ( $store )+ $offset ); //время последней модификации файла
if ( $date_now != $date_access && file_exists ( $store ))
{
//если даты не совпадают, то пора обнулить счетчик, удаляем файл (для директории надо выставить права 766)
unlink( $store );
}
if (! file_exists ( $store ))
{
//если файла данных не существует
$hit = 1 ;
$host = 1 ;
}
else
{
//получаем стоки из файла
$data = file( $store );
$data []= $uniq ; //добавляем к данным текущего юзера
$hit = count( $data ); //сколько строк, столько и хитов
//считаем хосты
$ip_ua = array ();
$ip_ua []= $uniq ; //запихиваем текущего юзера
foreach ( $data as $v )
{
if (! in_array ( $v , $ip_ua )) //если такой комбинации нет, то
$ip_ua []= $v ; //увеличиваем уникальные записи
}
$host = count( $ip_ua ); //число уникальных строк
}
//теперь записываем все в файл
$f = fopen ( $store , 'a+' ); //создаем/открываем
flock( $f , 2 ); //блокируем
fwrite( $f , $uniq ); //записываем упакованный массив
fclose( $f ); //закрываем (блокировка снимется сама)
echo $host ;
echo '/' ;
echo $hit ;
?>