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