[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проверка посетителя по ip
vestmar
Добрый день! Нашёл скрипт который проверяет посетителя по ip и сравнивает с подсетью,

$base = array('119.63.196.0/24', '115.239.212./24'); // и другие

function cidr($mask) {
return long2ip(pow(2, 32) - pow(2, (32-$mask)));
}

function ip_search($server_ip, $net, $mask) {
$server_ip = ip2long($server_ip);
$mask = ip2long($mask);
$net = ip2long($net);
if (($server_ip & $mask) == $net) {
return true;
}else {
return false;
}}


$all = sizeof($base);
for($i = 0; $i < $all; $i++) {
if ($base[$i]) {
$line = explode('/', $base[$i]);
$mask = rtrim($line[1], "\n");
$mask = cidr($mask);
$net = $line[0];
if (ip_search($server_ip, $net, $mask)) {
$is_ip_ban = false; break;
}}}

И в нём мне не нравится преобразование CIDR в отдельной функции

function cidr($mask) {
return long2ip(pow(2, 32) - pow(2, (32-$mask)));
}

Кому не трудно, подредактируйте пожалуйста!

Или есть может готовые варианты проверки ip по списку подсетей перебором.
я видел пример на github, но не могу найти больше.
Спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.