Если у Вас на сайте есть какой-нибудь сложный скрипт, к которому может обратиться любой пользователь, то желательно сделать защиту от постоянных нажатий 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 я уже писал.
Вот так можно защитить сервер от нетерпеливых посетителей и облегчить ему жизнь, правда, усложнив её самим посетителям, поэтому я такой скрипт у себя на сайтах не использую.
