код счетчика посетителей на сайт
Счетчик посетителей, представленный в этом решении, работает по следующему принципу:
Клиентская часть (JavaScript) отправляет запрос к серверу при загрузке страницы
Серверная часть (PHP) обрабатывает запрос, проверяет и обновляет данные счетчика
Результат (количество уникальных посетителей) возвращается и отображается на странице
<script>
// Простой запрос к счетчику
fetch('/includes/counter.php')
.then(response => response.text())
.then(count => {
document.getElementById('counter').textContent = count;
})
.catch(() => console.log('Счетчик временно недоступен'));
</script>
Отправляет GET-запрос к файлу counter.php
При успешном ответе выводит количество посетителей в элемент с id="counter"
При ошибке выводит сообщение в консоль
<?php
// Путь к файлу счетчика (вне публичной папки)
$counterFile = '....../blog/daily_visitors.dat';
// Фильтр ботов (простейшая версия)
$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
if (preg_match('/bot|crawl|spider|slurp|google|yandex/i', $userAgent)) {
die(); // Боты не учитываются
}
// Получаем IP (упрощенный вариант)
$ip = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
// Читаем текущие данные
$data = [];
if (file_exists($counterFile)) {
$data = json_decode(file_get_contents($counterFile), true) ?? [];
}
// Обновляем счетчик
if (!in_array($ip, $data)) {
$data[] = $ip;
file_put_contents($counterFile, json_encode($data));
}
// Выводим количество уникальных IP
header('Content-Type: text/plain');
echo count($data);
?>
Хранение данных:
Используется файл вне публичной директории (/var/www/blog/daily_visitors.dat)
Данные хранятся в JSON-формате как массив IP-адресов
Фильтрация ботов:
Простая проверка User-Agent на наличие ключевых слов (bot, crawl и т.д.)
Запросы от ботов не учитываются в статистике
Учет уникальности:
Проверяется, есть ли текущий IP в списке
Если IP новый - добавляется в массив
Безопасность:
Файл счетчика находится вне публичной директории
Используется простой текстовый формат без исполняемого кода
Создайте файл counter.php с приведенным выше кодом
Укажите правильный путь к файлу данных ($counterFile)
Убедитесь, что веб-сервер имеет права на запись в этот файл
Добавьте JavaScript-код на страницы, где должен отображаться счетчик
Создайте HTML-элемент с id="counter" для вывода результата
Текущая реализация имеет несколько ограничений:
Учет ведется только за текущий день (файл перезаписывается)
Нет разделения по страницам
Простая фильтрация ботов может пропускать некоторые боты
Возможные улучшения:
Добавить учет по датам
Реализовать хранение данных в базе данных
Улучшить фильтрацию ботов
Добавить график посещаемости
Этот счетчик предоставляет простой, но эффективный способ отслеживания уникальных посетителей на вашем сайте.
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!