Пишем счетчик просмотров для каждой страницы сайта на 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 /////////////////////////////////////////// /// Скрипт статистики просмотров станиц /// // http://wm-help.net/ /// /////////////////////////////////////////// /* данные для соединения с 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*60*24)."');"); 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*60*24)); // обновим дату UpdateCounders($unical_page_id_gid, $all, 1); // обновим счетчики } 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;. Источник: http://www.srubil.ru | |
| |
Просмотров: 428 | | |
Всего комментариев: 0 | |