Эта тема на forum.dklab.ru


Серж.Никитин: Скрипт счетчика посещений с записью IP, даты и страницы в файл
Кому нужно - пользуйтесь (подключайте на каждую страницу <?php include "counter.php"; ?>

<?php
//NIX.Stat
//Определение URL
$serv=$_SERVER["SERVER_NAME"];
$root=$_SERVER["REQUEST_URI"];
$path=$serv.$root;
//Определение IP-адреса машины
$ip=getenv("REMOTE_ADDR");
//Определение даты
$date=date("d.m.Y G:i:s");
//Записываем посещение
$cntf = fopen ("counter.txt", 'r');
$counts = fread ($cntf, filesize("counter.txt"));
$cnt=fopen("counter.txt",'a+');
fputs($cnt,$path."|".$ip."|".$date."\n");
fclose($cnt);
?>


Мне например нравится пользоваться, в любом проекте
Юрий Насретдинов:

$cntf = fopen ("counter.txt", 'r');
$counts = fread ($cntf, filesize("counter.txt"));

А это зачем?
Миша Спларов:
Предлагаю перенести это из "Склада готовых решений", т.к. тут даже нет блокировки файла при записи.
Svarog:
Предлагаю перенести это из "Склада готовых решений", т.к. тут даже нет блокировки файла при записи.
Банальный вопрос, а зачем ЭТО в "Склад готовых решений"?
Миша Спларов:
Svarog, если под этим вы подразумеваете блокировку, то будет вам известно, чтобы предотвратить потерю информации в файле, файл нужно блокировать перед записью/чтением.
Svarog:
По похожему алгоритму у меня работал скрипт сохраняющий текст заказов в текстовый файл, переодически он загадочно обнулялся, что было очень неприятно. Поэтому я считаю, что этот скрипт изначально ошибочный, тем более он не подходит на роль счетчика посещений... По поводу записи в текстовые файлы я писал вот здесь.

P.S. Миша Спларов, можно было ответить и полюбезнее.
Fenix1990:
$ip=getenv("REMOTE_ADDR"); можно заменить на $ip = $_SERVER['REMOTE_ADDR']; после этого его можно будит поставить в массив
Fenix1990:
а вообще я вот написал скрипт посещений с ведением логов



$hits = file('hits');
$hits = $hits[0] + 1;
$fa = fopen ("hits", "w");
$fb = fopen ("hitlog.log", "a");
$ip = $_SERVER['REMOTE_ADDR'];
$info=$HTTP_USER_AGENT;
$date=date("F j, Y, g:i a");
$newline="\n";
fputs($fb,$newline);
fputs($fb,"WEBSITE ACCESSED BY: $ip on $date . Settings: $info");
fputs($fb,$newline);
fputs($fa, $hits);
echo "&nbsp Хитов <b>$hits</b>";

можно доработать и вести логи с какого сайта пришли

а вот сам пример лога
WEBSITE ACCESSED BY: 85.85.85.85 on January 11, 2006, 6:14 pm . Settings: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MRA 4.3 (build 01218); .NET CLR 1.1.4322)
Maus:
$info=$HTTP_USER_AGENT;
$info = $_SERVER['HTTP_USER_AGENT'];
Юрий Насретдинов:

$hits = file('hits');
$hits = $hits[0] + 1;

А за такое вообще убивают :). Видимо Вы ещё не сталкивались с тем, как обнуляются счётчики, написанные подобным образом...
Дмитрий Котеров:
Перенесено из форума: Склад готовых решений :: PHP.
Перенесено в форум: Разное :: PHP.
kernel32:
Ну вы что, народ? Гораздо удобнее использовать какой-нибудь класс для ведения логов. Например,тот же класс File_Logger, описанный в книге Дмитрия Котерова... Гораздо легче, удобнее и приятнее.
Edain:

$hits = file('hits');
$hits = $hits[0] + 1;

А за такое вообще убивают :). Видимо Вы ещё не сталкивались с тем, как обнуляются счётчики, написанные подобным образом...
А что тут не так? Как нужно правильно писать счетчик.
P.S. http://softtime.ru/info/powercounter30.php Действительно мощная система подсчета количества посещений сайта. Считает все, а уж статистики там немерено.
Юрий Насретдинов:
Как нужно правильно писать счетчик.
Ну вот самое простое решение, которое я знаю - это следующее:


$f=fopen('counter.dat','a');
fputs($f,'a');
fclose($f);

$hits=filesize('counter.dat');

$kiFF: Благодарность!
Серж.Никитин большое спасибо за миникод: Скрипт счетчика посещений с записью IP, даты и страницы в файл.
Год назад искал,так и не нашел,был трезвый,сегодня выпил,затупил,ничАйно вывалился в вашу тему,то чё надо,спасибо!
Просто и понятно,будет желание немного доработаю, типа добавлю общее кол-во посещений на странице,графическое отображение и фильтрацию
повторяющихся ip при входе минут на 10 !!!

Эта тема на forum.dklab.ru