<?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;
?>