Обучение/Помощь новичкам | Ограничение для юзера
Всем привет.
У меня есть поиск и хочется ограничить количество запросов для пользователей, которые заходят на сайт. Как ограничить количество запросов, например, с одного ip до 10 запросов в день?
У меня есть поиск и хочется ограничить количество запросов для пользователей, которые заходят на сайт. Как ограничить количество запросов, например, с одного ip до 10 запросов в день?
Как вариант при каждом поиске сохранять ip и дату в лог. Потом при поиске проверять ip пользователя и дату с логом.
Пример
ограничить количество запросов с одного IP-адреса, используя функцию PHP gethostbyaddr(). Это вернет IP-адрес пользователя, и вы сможете сохранить его в базе данных или файле с отметкой времени. Затем, когда запрос сделан, вы можете проверить, сделал ли этот IP уже 10 запросов сегодня. Если это так, запретите им доступ.
Вот пример того, как это сделать:
// Получить IP-адрес пользователя
$ip = gethostbyaddr($_SERVER['REMOTE_ADDR']);
// Проверяем, сделали ли они сегодня уже 10 запросов
$requestsToday = 0; // Установить начальное значение в 0
// Подключиться к базе данных или открыть файл со списком запросов
// Прокручиваем записи и подсчитываем количество запросов с этого IP за сегодня
foreach ($ записывает как $ запись) {
if (strtotime($record['timestamp']) > strtotime('today') && $record['ip'] == $ip) {
$requestsToday++;
}
}
// Отказать в доступе, если сегодня с этого IP было сделано более 10 запросов
if ($requestsToday > 10) { echo 'Доступ запрещен'; exit; }
ограничить количество запросов с одного IP-адреса, используя функцию PHP gethostbyaddr(). Это вернет IP-адрес пользователя, и вы сможете сохранить его в базе данных или файле с отметкой времени. Затем, когда запрос сделан, вы можете проверить, сделал ли этот IP уже 10 запросов сегодня. Если это так, запретите им доступ.
Вот пример того, как это сделать:
// Получить IP-адрес пользователя
$ip = gethostbyaddr($_SERVER['REMOTE_ADDR']);
// Проверяем, сделали ли они сегодня уже 10 запросов
$requestsToday = 0; // Установить начальное значение в 0
// Подключиться к базе данных или открыть файл со списком запросов
// Прокручиваем записи и подсчитываем количество запросов с этого IP за сегодня
foreach ($ записывает как $ запись) {
if (strtotime($record['timestamp']) > strtotime('today') && $record['ip'] == $ip) {
$requestsToday++;
}
}
// Отказать в доступе, если сегодня с этого IP было сделано более 10 запросов
if ($requestsToday > 10) { echo 'Доступ запрещен'; exit; }
Не проще просто после первого запроса к сайту навсегда закрывать доступ к своему ресурсу? Вы ведь хотите, чтобы юзер больше не заходил на сайт?
А ещё лучше вариант, чтобы это хранил браузер , а не сервер)