Schet_USER_site_PHP_Счётчик_просмотров_страниц>

Счетчик просмотров страниц с графиком

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

Структура БД

Для хранения просмотров нужно создать таблицу `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 последнего пользователя в отдельном поле БД и при обновлении проверять его.

Читайте также:  Early binding and late binding in java

Также можно исключить просмотры поисковиков и других ботов с помощью функции 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 и в основном они работают с базой данных. Но если вам нужно прикрутить по-быстрому к одной странице счетчик посещений, то этот скрипт будет вам полезен. БД он не использует, а создает текстовый файл, в котором и хранит информацию о количестве просмотров. И, как обычно, предлагаю посмотреть как это выглядит:

Телеграм-канал serblog.ru

 ?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

Добрый день, Александр!
Немного доработал Вашу программу и в другой файл вывожу название браузера и время входа на страницу сайта «Простой счетчик просмотров страницы сайта на 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, и отслеживайте активность пользователей!

Digital view counter for websites

Счётчик просмотров — это полезный инструмент для отслеживания количества посещений на вашем сайте. В этой статье мы рассмотрим, как добавить счётчик просмотров на ваш сайт с помощью нескольких методов. 🛠️

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

Выберите один из представленных методов и добавьте счётчик просмотров на свой сайт. Теперь вы сможете отслеживать активность пользователей на вашем сайте. Удачи! 🚀

Источник

Оцените статью