Пользователь

Добро пожаловать,

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

Меню сайта




Ваше мнение
Какой язык программирования вы используете ?

ASP
Delphi
C/C++
Basic
PHP
Pascal
Java
Другой


Результаты
Другие опросы

Всего голосов: 1968
Комментарии: 10


Наши партнеры



Статистика




Programming books  Download software  Documentation  Scripts  Content Managment Systems(CMS)  Templates  Icon Sets  Articles  Contacts  Voting  Site Search




Статьи и обзоры



Счетчик просмотров для каждой страницы сайта на php

Речь пойдет о новой версии самого популярного в настоящее время языка написания сценариев для сервера - РНР 5. Этот язык позволяет разрабатывать высокопроизводительные Web-сайты любого масштаба и любой категории сложности. Рассматриваются такие вопросы, как синтаксические конструкции языка, объектно-ориентированное программирование на РНР, работа с базами данных и графическими изображениями, а также построение WAP-содержимого. Большое внимание уделяется эффективным решениям типовых практических задач на PHP, среди которых аутентификация посетителей, шифрование данных, использование сеансов, обработка ошибок, работа с электронной почтой. На некоторых сайтах часто можно увидеть следующую надпись внизу страницы или под статьями: "Всего просмотров xxx. Сегодня xx". На первый взгляд ничего особенного, но все равно, многим интересно, как это сделано.
В этой статье я попробую рассказать вам о том, как устроена данная статистика просмотров страниц сайта, на самом простом примере, написанном на php. Статистика просмотров страниц будет работать на связке MySQL + PHP. Основным отличием этой статистики от других будет то, что MySQL таблица будет занимать очень мало места, но при этом нельзя будет точно сказать какую именно страницу и сколько раз просмотрели. А все из-за того, что все url будут хешированны с помощью php функции md5(), что гарантирует почти 100% неповторяющихся id для каждой страницы сайта. Делается это только для ускорения работы php скрипта (при условии, что индексом является id страницы) и уменьшения размеров MySQL таблицы (за счет отсутствия длинных url).

MySQL таблица будет иметь следующую структуру:
Код
CREATE TABLE `my_log` (
`page_id` varchar(32) NOT NULL default '',
`all` int(11) NOT NULL default '0',
`today` int(11) NOT NULL default '0',
`date` int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;


page_id – уникальный id для каждой страницы сайта сгенерированный php функцией md5().
all – значение всех просмотров данной страницы.
today – просмотров страницы сегодня.
date – дата возвращаемая php функцией time() + 24 часа

Для правильного учета посещений страниц значение поля date будет изменяться, тогда, когда текущая дата будет больше той, что указанна в таблице. В этот же момент будет происходить и обнуление счетчика просмотров страницы за прошедшие сутки.

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

PHP код скрипта статистики просмотров страниц сайта:
PHP - Код

 
/* данные для соединения с MySQL */
$INFO['sql_host'] = "localhost";
$INFO['sql_user'] = "username";
$INFO['sql_pass'] = "userpass";
$INFO['sql_database'] = "my_db";
 
/* проверка, есть ли запись в MySQL */
/* таблице с таким id или ее нет */
function searchID($id)
{
$result mysql_query ("SELECT * FROM `my_log` WHERE `page_id` LIKE '".$id."'");
$num_rows mysql_num_rows($result);
if (
$num_rows>0)
{
    return 
True;
}
else
{
    return 
False;
}
}
 
 
/* Читает запись из MySQL таблицы */
/* возвращает ассоциированный массив */
function MySQLRead($id)
{
$id addslashes($id);
$result mysql_query ("SELECT * FROM `my_log` WHERE `page_id` LIKE '".$id."'");
return (array)
mysql_fetch_assoc($result);
}
 
/* Обновление времени для конкретной записи */
function UpdateTime($id$time)
{
$id addslashes($id);
$time addslashes($time);
$result mysql_query ("UPDATE `my_log` SET `date` = '".$time."' WHERE `page_id` = '".$id."'");
return 
$result;
}
 
/* Обновление счетчиков для записи с указанным id */
function UpdateCounders($id$all$today)
{
$id addslashes($id);
$time addslashes($time);
$result mysql_query ("UPDATE `my_log` SET `all` = '".$all."',`today` = '".$today."' WHERE `page_id` = '".$id."'");
return 
$result;
}
 
/* Запись всех значений "По умолчанию" */
function Default_Write($id)
{
$id addslashes($id);
$result mysql_query ("INSERT INTO `my_log` ( `page_id` , `all` , `today` , `date` ) VALUES ('".$id."' , 1 , 1 , '".(time()+60<img src="images/smilies/60.gif" border="0"><img src="images/smilies/24.gif" border="0">)."');");
return 
$result;
}
 
$unical_page_id_gid md5($_SERVER['REQUEST_URI']); // получение md5() хэша из url страницы
 
$link mysql_connect($INFO['sql_host'], $INFO['sql_user'], $INFO['sql_pass']); // Соединение с MySQL
mysql_select_db ($INFO['sql_database']); // Выбор базы данных
 
if (!searchID($unical_page_id_gid)) // существует ли запись с таким id
{
    
Default_Write($unical_page_id_gid); // запись всех значений по умолчанию
}
else 
// если не существует
{
$tmp MySQLRead($unical_page_id_gid); // считаем значения
$all $tmp['all'] + 1;
$today $tmp['today'] +1;
if (
time()>=$tmp['date']) // если сутки с момента записи прошли
{
    
UpdateTime($unical_page_id_gid, (time()+60<img src="images/smilies/60.gif" border="0"><img src="images/smilies/24.gif" border="0">)); // обновим дату
    
UpdateCounders($unical_page_id_gid$all1); // обновим счетчики
}
else 
// если еще нет
{
    
/* обновим счетчики */
    
UpdateCounders($unical_page_id_gid$all$today);
}
/* устанавливаем константу с текущими значениями счетчиков */
define("Today_and_all_counter""Всего просмотров этой страницы: $all. Сегодня: $today");
}
 
mysql_close($link); // Разрываем соединение с MySQL


Вот в принципе и весь php скрипт статистики просмотров страниц сайта. Для того, что бы он работал, его нужно "подключить" к нужному вам скрипту, например к index.php, добавив в index.php строчку include(' counter.php ');. А в том месте, где должно выводиться сообщение о том, сколько человек просмотрело данную страницу – строчку echo Today_and_all_counter;.
Скачать данный php скрипт статистики просмотров страниц сайта и MySQL файл со структурой таблицы можно здесь



admin
Пункты: 16700Дата: 24.11.2024 Комментарий: 2
adminЕсли не хотите считать ботов, добавьте фильтрацию IP-адресов. Создайте массив с адресами ботов и введите проверку попадает ли адрес посетителя в ваш список или нет. 4-5 строк кода.
3.25
Дата регистрации: 20.11.2008 1Мужчина Персональная информация
pupkin
Дата: 24.11.2024 Комментарий: 1
pupkininclude(' counter.php ');

А про ботов поисковых систем вы слышали ???
При заходе бота счетчик сработает а это не есть хорошо.
Дата регистрации: Нет информации Персональная информация


Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском


.



Статьи и обзоры PHP Счетчик просмотров для каждой страницы сайта на php На некоторых сайтах часто можно увидеть следующую надпись внизу страницы или под статьями & quot Всего просмотров Сегодня xx& первый взгляд ничего особенного но все равно многим интересно как это сделано этой статье попробую рассказать вам том устроена данная статистика страниц сайта на самом простом примере написанном Статистика будет работать связке MySQL Основным отличием статистики от других то