Как заблокировать на уровне PHP?

Sdrozdov
На сайте с 19.02.2021
Offline
41
567

Есть у меня в htaccess запись:

Deny from 45.89.16.0/22

Она блокирует диапазон 45.89.16.0 - 45.89.19.255
Это та самая битерика

Как выяснилось, увлекшись блокированием Битерики и кучи серверов разных хостинг-провайдеров, откуда толпами шли боты, случайно заблокировал и Билайн.
Как тот пул, который был в блокировке, попал в Билайн, да еще моего региона, не понимаю.


Есть идея блокировать не на уровне htaccess, а на уровне PHP, да и то - не блокировать полностью, а не показывать счетчики. Пусть гуляют, не получая профит.

Но как в PHP отловить, что IP входит в интервал 45.89.16.0/22 ?

MrLexKo
На сайте с 10.12.2010
Offline
100
#1
ChatGPT:

Вот пример PHP-скрипта для блокировки диапазона IP-адресов 45.89.16.0/22:

<?php
// Получаем IP-адрес текущего пользователя
$ipAddress = $_SERVER['REMOTE_ADDR'];

// Функция для проверки, находится ли IP-адрес в заданном диапазоне
function ipInRange($ip, $range) {
    list($subnet, $mask) = explode('/', $range);
    $ipLong = ip2long($ip);
    $subnetLong = ip2long($subnet);
    $maskLong = ~((1 << (32 - $mask)) - 1);
    return ($ipLong & $maskLong) == ($subnetLong & $maskLong);
}

// Задаем диапазон IP-адресов для блокировки
$blockRange = '45.89.16.0/22';

// Проверяем, находится ли текущий IP-адрес в заданном диапазоне
if (ipInRange($ipAddress, $blockRange)) {
    // IP-адрес находится в диапазоне блокировки
    echo "Ваш IP-адрес заблокирован.";
    // Дополните этот код дополнительными действиями, которые вы хотите выполнить для заблокированных пользователей.
    exit();
}

// Ваш код продолжается дальше, если IP-адрес не находится в блокированном диапазоне.
?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий