[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Определение интервала ip адреса
web-monster
Есть например ip адрес:
193.93.236.17

Мне нужно в конфиге предусмотреть если IP адрес находится в промежутке от

193.93.237.1 - 193.93.238.243
и
193.93.245.15 - 193.93.248.11
и
ну или ещё каким нибудь интервалом то делаем запрос, если не в этом промежутке то не чего не делаем.
Собственно как определить.




Спустя 18 минут, 4 секунды (15.02.2011 - 20:28) inpost написал(а):
Итак, я в танке, но попробую помочь лишь головой:
193.93.237.1 преобразуем в 193.093.237.001 , теперь соединяем и превращаем в число: 193093237001, а сам запрос выглядеть будет так:
WHERE IP > 193093237001 AND < 193093245015

Спустя 9 минут, 38 секунд (15.02.2011 - 20:38) inpost написал(а):
тогда
if($your_min > $X && $your_max < $X)

Только непонятно твоё замечание, я же как раз рассказал как преобразовать в нужный вид =)

Спустя 2 часа, 42 минуты, 12 секунд (15.02.2011 - 23:20) Dron19 написал(а):

$time = '193.93.237.1';
$time_int = '193.93.238.243';
$ip = $_SERVER['REMOTE_ADDR'];
function counter($string) {
$string = str_split($string);
return sizeof($string);
}

if(preg_match("/[0-9]{3}\.[0-9]{2}\.[0-9]{3}\.[0-9]{1}/i",$time)) {
$time .= 0;
$time .= 0;
}

$time = explode(".", $time);
if(counter($time[sizeof($time) - 1]) == 2) {
$time[sizeof($time) - 1] .= 0;
}
$ip = explode(".",$ip);
if(counter($ip[sizeof($ip) - 1]) == 1) {$ip[sizeof($ip) - 1] .= 0; $ip[sizeof($ip) - 1] .= 0;}
if(counter($ip[sizeof($ip) - 1]) == 2) $ip[sizeof($ip) - 1] .= 0;
$ip = join('',$ip);
$time = join('', $time);
$time_int = explode(".", $time_int);
$time_int = join('', $time_int);
if($ip < $time_int && $ip >=$time && ($time >= '19393237100') && ($time < $time_int)) {
echo 'ok';
}

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

Спустя 20 минут, 3 секунды (15.02.2011 - 23:40) Dron19 написал(а):
Завтра проснусь, допишу нормально

Спустя 9 часов, 34 минуты, 25 секунд (16.02.2011 - 09:14) linker написал(а):
ip2long() - получаем целочисленные значения и сравниваем.

Спустя 1 час, 6 минут, 5 секунд (16.02.2011 - 10:21) LRCenter написал(а):
linker, inpost
Блин, гениально! Сам долго парился с решением этой задачи. Спасибо, помогли!


А почему в этой теме у первого сообщения измененный цвет фона?

Спустя 6 часов, 19 минут, 11 секунд (16.02.2011 - 16:40) web-monster написал(а):
Я тоже на подобии нашёл вчера, чуть изменил и вот:
$get_ip = '43.93.245.243';
$get_ip=explode(".",$get_ip);

// -------------------------- Проверка диапазона IP --------------------------
function chk_ips($ip,$ip_start,$ip_end) {
for ($i=0; $i<4; $i++) {
if ($ip_start[$i]=='*' || $ip_end[$i]=='*') {
continue;
}
elseif ($ip[$i]>=$ip_start[$i] && $ip[$i]<$ip_end[$i]) {
break;
}
elseif ($ip[$i]==$ip_start[$i] || $ip[$i]==$ip_end[$i]) {
continue;
} else {
// IP не входит в интервал
return 0;
}
}


return 1;
}

function range_parser($range) {
$range=trim($range);

// Проверка диапазона вида x.x.x.x-y.y.y.y
if (strpos($range,"-")) {
$tmp=explode("-",$range);
$ip_start=explode(".",$tmp[0]);
$ip_end=explode(".",$tmp[1]);
}

// Проверка на корректность полученных диапазонов
if (count($ip_start)==4 && count($ip_end)==4) {
return array($ip_start, $ip_end);
} else {
return false;
}
}


// ----------------- Интервал IP-адресов -----------------
$range_1="43.93.237.1-43.93.238.243";
$range_2="43.93.245.15-43.93.248.11";

$chk_1=range_parser($range_1);
$chk_2=range_parser($range_2);

$check_ip_1 = chk_ips($get_ip,$chk_1[0],$chk_1[1]);
$check_ip_2 = chk_ips($get_ip,$chk_2[0],$chk_2[1]);

if($check_ip_1==1||$check_ip_2==1) // если есть в диапазонах то делаем дела
{
}


Спустя 1 час, 40 минут, 38 секунд (16.02.2011 - 18:20) Dron19 написал(а):
классно, я придумал свой велосипед!!!!!!!!! biggrin.gif biggrin.gif biggrin.gif
В то время как линкер написав маленькую функцию успешно решит проблему...

Спустя 52 секунды (16.02.2011 - 18:21) Dron19 написал(а):
зато не плохой велосипед получился =)
Быстрый ответ:

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