Простой блог о web-технологиях

Простой счетчик просмотров php/mysql

537
20.11.2017
Всем привет. Сегодня расскажу как реализовать простой счетчик просмотров сайта с защитой от накрутки путем обновления страницы.

Сделал с помощью сессий в php. Логика простая: при посещении страницы в коде срабатывает проверяется условие, установлена сессия или нет. Если сессия не установлена, то в поле БД, которое я назвал visits инкрементируется число (значение увеличивается на 1).

Реализация сессиями не самый удачный вариант, так как при закрытии сайта, сессия удаляется и при открытии страницы вновь, счетчик снова увеличится, но другие способы так же не дают 100% гарантию защиты, поэтому способ сессиями считаю самым простым в реализации и достаточно защищенным. Как я уже сказал выше при обновлении страницы дважды, число не увеличится, так как не сработает условие.

Почему не куки?

Все очень просто. Куки могут быть отключены на стороне клиента и скрипт не спасёт от накрутки.

Реализация

Для начала давайте создадим условие, которое будет проверять установлена сессия или нет, и если нет, увеличивать значение поля в БД на единицу:
session_start();

if (!isset($_SESSION['visits'][$id])) {
$_SESSION['visits'][$id] = 1;
$query = "UPDATE blog SET visits=visits+1 WHERE id='$id'";
$sql = $mysqli->query($query);
}

В данном примере установлена сессия
visits, в которую так же записана переменная (например номер страницы, для учета посещений каждой отдельной страницы). Повторюсь, что при обновлении страницы данное условие уже не сработает.

Ну и конечно после всего этого можно выводить поле visits в любом удобном месте сайта.

счетчик php, количество просмотров, сессии
Нет комментариев
Оставить комментарий
необходимо заполнить выделенные поля