Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Счётчик
 
 автор: pautina   (11.06.2008 в 11:01)   письмо автору
 
 

Уважаемое сообщество. Ни поможете мне создать счётчик, (если на страницу с определённым адресом кто-то защёл, то значение увеличивается на 1)

   
 
 автор: Valick   (11.06.2008 в 11:06)   письмо автору
 
   для: pautina   (11.06.2008 в 11:01)
 

Самый простой
http://softtime.ru/forum/read.php?id_forum=1&id_theme=44056

Воспользуйтесь поиском по форуму, много чего найдёте.

   
 
 автор: pautina   (11.06.2008 в 11:31)   письмо автору
 
   для: Valick   (11.06.2008 в 11:06)
 

А Вы ни скажете как написать на php следующее:
если на страницу с адресам www.yandex.ru кто то защёл то
$count = 0;
$count = $count + 1;
Просто самому интересно, как реализовать счётчик, пока мне не нужно какой-то сложной статистики интерисует самый простой вариант,
Пусть например есть переменая count которая содержит число посещений к определённому ресурсу, только вот что писать после if низнаю.

   
 
 автор: Valick   (11.06.2008 в 12:26)   письмо автору
984 байт
 
   для: pautina   (11.06.2008 в 11:31)
 

Так я вам и привёл самый простейший счётчик на файлах.

Всего две функции, запись в файл (должна стоять на учитываемой странице) и чтение из файла (чтобы посмотреть счётчик)

   
 
 автор: pautina   (11.06.2008 в 13:15)   письмо автору
 
   для: 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($fLOCK_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($fLOCK_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") "раз"; вывод текста не получается, что изменить?

   
 
 автор: Valick   (11.06.2008 в 13:23)   письмо автору
 
   для: pautina   (11.06.2008 в 13:15)
 

Если вместо последней строки поставить
Ставте, ктож вам не разрешает :-)
Соответственно для каждой страници пропишите count_write("count/СТРАНИЦА_ТАКАЯ-ТО.dat")
а читать можно просканировав директорию count и выводить содержимое всех файлов в цикле, вот вам и статистика посещений страниц сайта.

   
 
 автор: pautina   (11.06.2008 в 14:13)   письмо автору
 
   для: Valick   (11.06.2008 в 13:23)
 

Ни очень понимаю, что Вы имели в виду, сделал так

...
echo "Статистика посещений пользователей сайта"."<br>"."<br>";
echo count_write("count/count.dat")."<br>";
$a=count_read("count/count.dat");
echo "Страница посещалась $a раз";
...

Всё вроде работает за код Вам большое спасибо.

   
 
 автор: Valick   (11.06.2008 в 14:19)   письмо автору
 
   для: pautina   (11.06.2008 в 14:13)
 

А как вы думаете зачем функции записи и чтения разделены? Просто когда смотрите статистику , например из административной панели запись ненужна, а только чтение. Когда записывает в файл функция тоже возвращает значение счётчика, поэтому функцию чтения использовать необязательно.


... 
echo "Статистика посещений пользователей сайта"."<br>"."<br>"; 
$a=count_write("count/count.dat"); 
echo "Страница посещалась $a раз"; 
...

П поводу вышесказанного (сканирование директории) попробую накатать код когда время появится, будет немного понятнее.

   
 
 автор: Valick   (11.06.2008 в 22:22)   письмо автору
2.7 Кб
 
   для: Valick   (11.06.2008 в 14:19)
 

Вот

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования