Если у Вас на сайте есть какой-нибудь сложный скрипт, к которому может обратиться любой пользователь, то желательно сделать защиту от постоянных нажатий F5 . Так же подобную защиту можно встретить на обычных сайтах, где просто запрещено постоянно обновлять страницу. В этом материале я покажу один из способов, как по...

Защита от постоянных нажатий F5

Если у Вас на сайте есть какой-нибудь сложный скрипт, к которому может обратиться любой пользователь, то желательно сделать защиту от постоянных нажатий F5. Так же подобную защиту можно встретить на обычных сайтах, где просто запрещено постоянно обновлять страницу. В этом материале я покажу один из способов, как подобное можно реализовать.

Код достаточно простой:

<?php
  session_start(); // Начинаем сессию
  $ts = time(); // Получаем текущее время
  $s_time = (empty($_SESSION["time"]))? 0: $_SESSION["time"]; // Если пользователь обращается к скрипту впервые, то устанавливаем значение 0, иначе берём его из сессии
  $_SESSION["time"] = $ts; // Обновляем значение сессии
  if ($ts - $s_time > 2) { // Если с момента предыдущего обращения прошло больше 2 секунд
    echo "Тут сложный скрипт"; // Выполняем скрипт
  }
  else echo "Хватит постоянно обновлять страницу!"; // Выводим сообщение об ошибке
?>

Теперь если Вы попробуете понажимать F5, то обнаружите, что выводится сообщение "Хватит постоянно обновлять страницу!". Однако, если Вы будете делать перерывы (как обычный пользователь), а не кликать каждую секунду, то никаких проблем не возникнет.

Вот такая простая защита от F5. И обязательно отмечу, что это ни в коем случае не защита от умышленной атаки. Поскольку идентификатор сессии хранится у пользователя, соответственно, злоумышленник его просто не будет отправлять, и скрипт будет всегда выполняться. Впрочем, про защиту от DDOS я уже писал.

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