|
|
|
| Уважаемое сообщество. Ни поможете мне создать счётчик, (если на страницу с определённым адресом кто-то защёл, то значение увеличивается на 1) | |
|
|
|
|
|
|
|
для: pautina
(11.06.2008 в 11:01)
| | Самый простой
http://softtime.ru/forum/read.php?id_forum=1&id_theme=44056
Воспользуйтесь поиском по форуму, много чего найдёте. | |
|
|
|
|
|
|
|
для: Valick
(11.06.2008 в 11:06)
| | А Вы ни скажете как написать на php следующее:
если на страницу с адресам www.yandex.ru кто то защёл то
$count = 0;
$count = $count + 1;
Просто самому интересно, как реализовать счётчик, пока мне не нужно какой-то сложной статистики интерисует самый простой вариант,
Пусть например есть переменая count которая содержит число посещений к определённому ресурсу, только вот что писать после if низнаю. | |
|
|
|
|
984 байт |
|
|
для: pautina
(11.06.2008 в 11:31)
| | Так я вам и привёл самый простейший счётчик на файлах.
Всего две функции, запись в файл (должна стоять на учитываемой странице) и чтение из файла (чтобы посмотреть счётчик) | |
|
|
|
|
|
|
|
для: Valick
(11.06.2008 в 12:26)
| | Весь код который Вы дали такой,
<?php
// Функция записи в файл счётчика
function count_write($filename)
{
// Создаём файл если он не существует
// ни в коем случае не используем w или w+
if(!file_exists($filename))
{
fclose(fopen($filename, "a+t"));
}
// Открываем файл для чтения и записи в режиме r+t
// некоторые версии FreeBSD имеют проблемы с режимом а+
// и не могут установить указатель на начало файла при помощи fseek
$f=fopen($filename, "r+t") or die("Невозможно открыть файл");
// Блокируем файл (блокировка с запретом "подвисания")
while(!flock($f, LOCK_EX+LOCK_NB))
{
sleep(1); // ждём одну секунду
}
// Файл заблокирован, можно производить запись
$count=fread($f,100); // читаем значение счётчика
$count=$count+1; // увеличиваем значение счётчика
ftruncate($f,0); // очищаем файл
fseek($f,0,SEEK_SET); // переводим указатель в начало файла
fwrite($f,$count); // записываем новое значение
fclose($f); // закрываем файл
// Возвращаем значение счётчика
return $count;
}
// Функция чтения файла счётчика
function count_read($filename)
{
// Открываем файл если он существует
if(file_exists($filename))
{
$f=fopen($filename, "r+t") or die("Невозможно открыть файл");
// Блокируем файл (разделяемая блокировка)
flock($f, LOCK_SH); // ждём завершения процесса записи
// В файл теперь никто не пишет, можно читать
$count=fread($f,100); // считываем значение счётчика
fclose($f); // закрываем файл
}
else
{
$count="Файл не существует";
}
// Возвращаем значение счётчика
return $count;
}
echo count_write("count/count.dat")."<br>";
echo count_read("count/count.dat");
?>
|
Если вместо последней строки поставить
echo "Данная страница посещалась" count_read("count/count.dat") "раз"; вывод текста не получается, что изменить? | |
|
|
|
|
|
|
|
для: pautina
(11.06.2008 в 13:15)
| | Если вместо последней строки поставить
Ставте, ктож вам не разрешает :-)
Соответственно для каждой страници пропишите count_write("count/СТРАНИЦА_ТАКАЯ-ТО.dat")
а читать можно просканировав директорию count и выводить содержимое всех файлов в цикле, вот вам и статистика посещений страниц сайта. | |
|
|
|
|
|
|
|
для: Valick
(11.06.2008 в 13:23)
| | Ни очень понимаю, что Вы имели в виду, сделал так
...
echo "Статистика посещений пользователей сайта"."<br>"."<br>";
echo count_write("count/count.dat")."<br>";
$a=count_read("count/count.dat");
echo "Страница посещалась $a раз";
...
|
Всё вроде работает за код Вам большое спасибо. | |
|
|
|
|
|
|
|
для: pautina
(11.06.2008 в 14:13)
| | А как вы думаете зачем функции записи и чтения разделены? Просто когда смотрите статистику , например из административной панели запись ненужна, а только чтение. Когда записывает в файл функция тоже возвращает значение счётчика, поэтому функцию чтения использовать необязательно.
...
echo "Статистика посещений пользователей сайта"."<br>"."<br>";
$a=count_write("count/count.dat");
echo "Страница посещалась $a раз";
...
|
П поводу вышесказанного (сканирование директории) попробую накатать код когда время появится, будет немного понятнее. | |
|
|
|
|
2.7 Кб |
|
|
для: Valick
(11.06.2008 в 14:19)
| | Вот | |
|
|
|