Принцип работы счетчика
Счетчик посетителей, представленный в этом решении, работает по следующему принципу:
-
Клиентская часть (JavaScript) отправляет запрос к серверу при загрузке страницы
-
Серверная часть (PHP) обрабатывает запрос, проверяет и обновляет данные счетчика
-
Результат (количество уникальных посетителей) возвращается и отображается на странице
Клиентская реализация (JavaScript)
<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" для вывода результата
Ограничения и возможные улучшения
Текущая реализация имеет несколько ограничений:
-
Учет ведется только за текущий день (файл перезаписывается)
-
Нет разделения по страницам
-
Простая фильтрация ботов может пропускать некоторые боты
Возможные улучшения:
-
Добавить учет по датам
-
Реализовать хранение данных в базе данных
-
Улучшить фильтрацию ботов
-
Добавить график посещаемости
Этот счетчик предоставляет простой, но эффективный способ отслеживания уникальных посетителей на вашем сайте.
Комментарии
Пока нет комментариев. Будьте первым!