- Счетчик просмотров страниц с графиком
- Структура БД
- Скрипт счетчика
- Вывод результатов
- Просмотры за день
- Неделя, месяц, год
- Интервал между датами
- За всё время
- График просмотров
- Простой счетчик просмотров страницы сайта на php
- Читайте также:
- Как добавить на сайт счётчик просмотров
- 1. Использование сторонних сервисов
- 2. Создание собственного счётчика просмотров с использованием PHP и MySQL
- 3. Использование JavaScript для создания счётчика просмотров
Счетчик просмотров страниц с графиком
Для примера возьмем статейный сайт, на нём нужно сделать счетчик просмотров статей, с выводом результатов за день, неделю, месяц и построить график посещаемости.
Структура БД
Для хранения просмотров нужно создать таблицу `visits` в БД:
CREATE TABLE IF NOT EXISTS `visits` ( `id` int(11) NOT NULL AUTO_INCREMENT, `page_id` int(11) UNSIGNED NOT NULL DEFAULT '0', `counter` int(11) UNSIGNED NOT NULL, `date` date NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
- page_id – ID страницы,
- counter – количество просмотров,
- date – дата в формате YYYY-MM-DD .
Просмотры будут хранится в виде счетчика за день, таким образом получится сэкономить на количестве записей в таблице и ускорить последующие SQL-запросы к ней.
Скрипт счетчика
В обработчике вывода статей нужно добавить код для добавления данных в созданную таблицу.
// ID статьи $post_id = 123; // Подключение к БД (далее в примерах его не будет). $dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль'); $sth = $dbh->prepare("SELECT * FROM `visits` WHERE `page_id` = ? AND `date` = CURDATE()"); $sth->execute(array($post_id)); $res = $sth->fetch(PDO::FETCH_ASSOC); if (empty($res)) < $sth = $dbh->prepare("INSERT INTO `visits` SET `page_id` = ?, `counter` = 1, `date` = CURDATE()"); $sth->execute(array($post_id)); > else < $sth = $dbh->prepare("UPDATE `visits` SET `counter` = `counter` + 1 WHERE `id` = ?"); $sth->execute(array($res['id'])); >
Если один пользователь обновит страницу несколько раз, то все просмотры будут зачтены. Избежать этого можно добавив проверку – дополнительно хранить user agent последнего пользователя в отдельном поле БД и при обновлении проверять его.
Также можно исключить просмотры поисковиков и других ботов с помощью функции is_bot().
Теперь просмотры добавляются в БД:
Вывод результатов
Просмотры за день
$post_id = 123; $sth = $dbh->prepare("SELECT `counter` AS `views` FROM `visits` WHERE `post_id` = ? AND `date` = CURDATE()"); $sth->execute(array($post_id)); $res = $sth->fetch(PDO::FETCH_ASSOC); echo $res['views'];
Неделя, месяц, год
$post_id = 123; $date = date('Y-m-d', strtotime('-7 days')); // -1 month, -1 year $sth = $dbh->prepare("SELECT SUM(`counter`) AS `views` FROM `visits` WHERE `item_id` = ? AND `date` > ?"); $sth->execute(array($post_id, $date)); $res = $sth->fetch(PDO::FETCH_ASSOC); echo $res['views'];
Интервал между датами
$post_id = 123; $date_start = date('Y-m-d', strtotime('01.09.2019')); $date_end = date('Y-m-d', strtotime('01.10.2019')); $sth = $dbh->prepare("SELECT SUM(`counter`) AS `views` FROM `visits` WHERE `item_id` = :id AND `date` BETWEEN :start AND :end"); $sth->execute(array('id' => $post_id, 'start' => $date_start, 'end' => $date_end)); $res = $sth->fetch(PDO::FETCH_ASSOC); echo $res['views'];
За всё время
$post_id = 123; $sth = $dbh->prepare("SELECT SUM(`counter`) AS `views` FROM `visits` WHERE `post_id` = :id"); $sth->execute(array('id' => $post_id)); $res = $sth->fetch(PDO::FETCH_ASSOC); echo $res['views'];
График просмотров
Сформируем график просмотров статьи с помощью плагина диаграмм morris.js. В PHP получим данные, сформируем массив по дням и выведем объектом в JS.
prepare("SELECT * FROM `visits` WHERE `post_id` = ? ORDER BY `date`"); $sth->execute(array($post_id)); $res = $sth->fetchAll(PDO::FETCH_ASSOC); $list = array(); foreach ($res as $row) < $list[] = array('year' =>date('d.m.Y', strtotime($row['date'])), 'value' => $row['counter']); > ?>
Простой счетчик просмотров страницы сайта на php
Всем привет. Существует масса способов реализации счетчика просмотров страницы на PHP и в основном они работают с базой данных. Но если вам нужно прикрутить по-быстрому к одной странице счетчик посещений, то этот скрипт будет вам полезен. БД он не использует, а создает текстовый файл, в котором и хранит информацию о количестве просмотров. И, как обычно, предлагаю посмотреть как это выглядит:
?php $file = file("count.txt"); $count = implode("", $file); $count++; $myfile = fopen("count.txt","w"); fputs($myfile,$count); fclose($myfile); ?> span>Просмотров: ?=$count ?>span> // вывод счетчика
Наверное это самый простой из всех возможных счетчиков посещений. Как вы уже догадались он считает абсолютно все заходы, то есть хиты, а именно каждую загрузку сайта. Ни о какой уникальности речи не идет, да это и не нужно, для этого нужен совсем другой счетчик, с более сложной структурой. Таким образом мы можем показать посетителям какие записи имеют наибольшую популярность, а так же для красоты.
Вместо слова «Просмотров» можно установить картинку в виде глаза. Это сейчас не только модно, но так же экономит место и смотрится достаточно информативно без каких-либо дополнительных объяснений.
Читайте также:
Здравствуйте Александр!
Нашла на Вашем сайте, то что давно искала, но я как говорят, чайник, и не понимаю как установить этот простой скрипт подсчета посетителей на свою страницу сайта.
Прошу Вашей помощи.
Готова оплатить вашу работу
Добрый день, Александр! 27-01-2021г. Ошибка вот такая: Unchecked runtime.lastError: The message port closed before a response was received ! Но считает так что прибавляет 3 каждый раз.
Скорее всего проблема в браузере и скорее всего у вас Хром. Попробуйте открыть страницу в другом браузере. Отпишитесь.
Привожу свой код с добавлениями, которые позволяют записывать в файл имя браузера и время входа на сайт «Простой счетчик просмотров страницы сайта на php»
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Schet_USER_site_PHP_Счётчик_просмотров_страницы body{ font-family: sans-serif; } .con3tent{ width: 80%; margin: 0 auto; } p.views span{ position: relative; top: -4px; } //Счётчик просмотров страницы на PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
html lang="ru"> head> meta charset="UTF-8″/> meta name="viewport" content="width=device-width, initial-scale=1.0″/> title>Schet_USER_site_PHP_Счётчик_просмотров_страниц>/title> style type="text/css"> body < font-family: sans-serif; >.con3tent < width: 80%; margin: 0 auto; >p.views span < position: relative; top: -4px; >/style> /head> body> < ?php$file =@file(‘./tmp/counter.txt’); $count = @implode("", $file); $count++; $myFile = fopen(‘./tmp/counter.txt’, ‘w’); fputs($myFile, $count); fclose($myFile); $filename = ‘./tmp/example.log’; $ip = ($_SERVER["REMOTE_ADDR"]); // Определяем IP посетителя $bravo = ($_SERVER["HTTP_USER_AGENT"]);//Определяем браузер file_put_contents($filename, date(‘[Y-m-d H:i:s] ‘) . print_r($bravo, true) . PHP_EOL, FILE_APPEND | LOCK_EX); ?> div class="con3tent"> h1>Счётчик просмотров страниц> на PHP/h1> p class="views">img src="./tmp/eye.svg" width="20″ alt="просмотров"/> span>< ?= $count ?>/span> /p> /div> /body> /html>
< !DOCTYPE html>
body < font-family: sans-serif; >.con3tent < width: 80%; margin: 0 auto; >p.views span < ?php $file =@file(‘./tmp/counter.txt’); $count = @implode("", $file); $count++; $myFile = fopen(‘./tmp/counter.txt’, ‘w’); fputs($myFile, $count); fclose($myFile); $filename = ‘./tmp/example.log’; $ip = ($_SERVER["REMOTE_ADDR"]); // Определяем IP посетителя $bravo = ($_SERVER["HTTP_USER_AGENT"]);//Определяем браузер file_put_contents($filename, date(‘[Y-m-d H:i:s] ‘) . print_r($bravo, true) . PHP_EOL, FILE_APPEND | LOCK_EX); ?>
Добрый день, Александр!
Немного доработал Вашу программу и в другой файл вывожу название браузера и время входа на страницу сайта «Простой счетчик просмотров страницы сайта на php»
Запускал сайт на разных брайзерах. Вот результат. [2021-01-28 10:02:57] Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko 1 3 5 7 =8 (содержимое counter.txt после подсчёта =8)
[2021-01-28 10:02:57] Mozilla/5.0 (Windows NT 10.0; Win64; x64; Trident/7.0; rv:11.0) like Gecko Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393 1 2 3 4 5 =5 (содержимое counter.txt после подсчёта =5) [2021-01-28 10:24:21] Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0 =1 2 3 4 5 6 =6 (содержимое counter.txt после подсчёта =6) [2021-01-28 10:31:22] Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 = 1 4 7 10 =12 (содержимое counter.txt после подсчёта =12) [2021-01-28 10:37:23] Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 YaBrowser/20.12.1.179 Yowser/2.5 Safari/537.36 1 3 5 7 9 11 =12 (содержимое counter.txt после подсчёта =12)
Как добавить на сайт счётчик просмотров
Узнайте, как добавить счётчик просмотров на ваш сайт с помощью сторонних сервисов, PHP и MySQL или JavaScript, и отслеживайте активность пользователей!
Счётчик просмотров — это полезный инструмент для отслеживания количества посещений на вашем сайте. В этой статье мы рассмотрим, как добавить счётчик просмотров на ваш сайт с помощью нескольких методов. 🛠️
1. Использование сторонних сервисов
Самый простой и быстрый способ добавить счётчик просмотров на ваш сайт — использовать сторонние сервисы, такие как Google Analytics или Яндекс.Метрика. Зарегистрируйтесь в сервисе и добавьте код отслеживания на ваш сайт.
Пример кода отслеживания Google Analytics:
Пример кода отслеживания Яндекс.Метрики:
Не забудьте заменить UA-XXXXX-Y или XXXXX на ваш идентификатор отслеживания.
2. Создание собственного счётчика просмотров с использованием PHP и MySQL
Если вы хотите создать собственный счётчик просмотров, вы можете использовать язык программирования PHP и базу данных MySQL. Ниже приведен пример кода для создания счётчика просмотров с использованием PHP и MySQL.
Создание таблицы в базе данных:
CREATE TABLE `page_views` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `page` VARCHAR(255) NOT NULL, `views` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) );
Файл counter.php :
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) < die("Connection failed: " . $conn->connect_error); >$page = basename($_SERVER['PHP_SELF']); $sql = "INSERT INTO page_views (page, views) VALUES ('$page', 1) ON DUPLICATE KEY UPDATE views=views+1"; $conn->query($sql); $sql = "SELECT views FROM page_views WHERE page = '$page'"; $result = $conn->query($sql); $row = $result->fetch_assoc(); echo "Просмотров: " . $row['views']; $conn->close(); ?>
Вставка счётчика просмотров на страницу:
3. Использование JavaScript для создания счётчика просмотров
Если у вас нет доступа к серверной стороне, вы можете использовать JavaScript и сторонние сервисы, такие как Firebase, для создания счётчика просмотров.
Пример кода с использованием Firebase Realtime Database:
Просмотров: 0
Выберите один из представленных методов и добавьте счётчик просмотров на свой сайт. Теперь вы сможете отслеживать активность пользователей на вашем сайте. Удачи! 🚀