Счетчик посещений на PHP
Итак, создав свой сайт, многие естественно захотят узнать, какие его странички являются наиболее посещаемыми и привлекают больше посетителей. Для того чтобы определить, какие странички Вашего сайта наиболее посещаемые, необходимо установить счетчик посещений на сайт. Причем данный счетчик должен считать не просто количество посетителей сайта, а именно посетителей для каждой странички в отдельности.
Если Вы обратили внимание, то в конце каждой темы нашего сайта уже установлен подобный счетчик, который отображает какое количество раз была посещена каждая страничка сайта.
При разработке скрипта учета количества визитов необходимо предусмотреть, в течение какого времени не будут учитываться повторные заходы одного и того же посетителя. Таким образом, если посетитель Вашего сайта за небольшой промежуток времени вернется на уже посещенную ранее страничку, либо обновит ее несколько раз, то будет засчитан только один просмотр для данной странички.
Для создания такого скрипта Вам понадобится добавить в MySQL таблицу, которая будет содержать в себе id посещенной темы, IP адрес посетителя и время визита. Назовем данную таблицу visit_theme. Структура таблицы visit_theme приведена ниже:
Также потребуется добавить в основную таблицу, где хранится вся информация по темам сайта (в PHP коде мы назвали данную таблицу all_theme), дополнительное поле visits (тип данных integer). В данном поле мы будем хранить суммарное число посещений темы, которое будет показываться на сайте для конкретной странички.
Далее, на все странички Вашего сайта, где необходимо установить счетчик посещений, добавьте следующий PHP код:
<?php
$theme_id=''; //Необходимо из базы получить и указать id темы
$ip=$_SERVER['REMOTE_ADDR'];
$time=time();
$res=mysqli_query($db,"SELECT count(id) FROM visit_theme WHERE
id_theme_visit='".$theme_id."' and ip_visit=INET_ATON('".$ip."') and
date_visit>'".($time-86400)."' LIMIT 1");
$count_id=mysqli_fetch_array($res);
if ($count_id[0]==0) {
$res=mysqli_query($db,"UPDATE all_theme SET visits=(visits+1) WHERE
id='".$theme_id."' LIMIT 1");
$res=mysqli_query($db,"INSERT INTO visit_theme (id_theme_visit,ip_visit,date_visit)
VALUES ('".$theme_id."',INET_ATON('".$ip."'),'".$time."')");
}
?>
Данный PHP код проверяет в таблице visit_theme, были ли посещения данной странички с данного IP адреса за последние 24 часа (86400 секунд). Если не было, то увеличивает в таблице all_theme для темы с указанным id количество просмотров на единицу и добавляет в таблицу visit_theme новую запись с id посещенной страницы, IP адресом посетителя и временем посещения.
В том месте, где должно выводиться количество посещений темы, добавьте такой PHP код:
<?php
$result=mysqli_query($db,"SELECT visits FROM all_theme WHERE
id='".$theme_id."' LIMIT 1");
$res=mysqli_fetch_array($result);
echo '<span>Просмотров странички - <b>'.$res["visits"].'</b></span>';
?>
Данный код просто получает из базы количество посещений данной темы и выводит на экран.
Чтобы не перегружать базу и не хранить все посещения сайта, таблицу visit_theme необходимо периодически чистить от устаревших записей (старше 24 часов). Для этого достаточно раз в сутки запускать следующий код:
<?php
$res=mysqli_query($db,"DELETE FROM visit_theme WHERE
date_visit<'".(time()-86400)."'");
?>
Перед публикацией все комментарии проходят обязательную модерацию!
Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Необходимо из базы получить и указать id темы.
Количество просмотров из базы в статье вывожу как <?=$new["visits"]; ?>