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