Как заблокировать диапазон ip-адресов с помощью php?


у Меня есть функция в php, но не хотел бы, чтобы она была выполнена людей одной страны, как сделать так, чтобы php-скрипт блокирует один диапазон ip-адресов?

, Например, заблокировать диапазон ip-адресов из США.

необходимо, можно добавить диапазон ip-адресов.

 4
Author: Florida, 2016-09-01

1 answers

Можно сделать несколькими способами:

Предполагая, что нужно заблокировать диапазон: 90.25..

1) с Помощью strpos:

if(strpos($_SERVER['REMOTE_ADDR'], "90.25") === 0)){ // se ip começa com 90.25
    echo 'bloqueado';
    exit;
}

2) с Помощью ip2long маска в стандартной: 255.255.0.0

$rede = ip2long("90.25.0.0");
$mascara = ip2long("255.255.0.0");
$ip = ip2long($_SERVER['REMOTE_ADDR']);
if (($mascara & $mascara) == ($ip & $mascara)) {
        echo 'bloqueado';
        exit;
}

3) с Помощью ip2long маска в стандартной: 255.255.0.0/16

$rede = ip2long("90.25.0.0");
$prefixo = 16;
$ip = ip2long($_SERVER['REMOTE_ADDR']);
if ($rede >> (32 - $prefixo )) == ($ip >> (32 - $prefixo )) {
     echo 'bloqueado';
     exit;
}

, Чтобы заблокировать несколько треков, создайте array треков, которые будут заблокированы, и совершите loop повторять блокада.

Примечание: на Основе ответов на вопрос iTayb

 4
Author: Allan Andrade, 2017-05-23 12:37:31