|
|
|
| как забанить по отдельно_взятому IP это понятно.....
а как осуществить бан по диапазону IP адресов?
Помогите разобраться вот на таком примерчике:
Человек приходит с адреса 217.115.179.72
в БД записан диапазон запрещённых адресов:217.115.160.0 - 217.115.180.240
как и чем нужно обходить этот диапазон и сверять с адресом
с которого пришёл человек....????
Спасибо за внимание. | |
|
|
|
|
|
|
|
для: method
(03.08.2005 в 04:57)
| | переведи ип в integer и сравнивай. | |
|
|
|
|
автор: Транк (03.08.2005 в 12:46) |
|
|
для: method
(03.08.2005 в 04:57)
| | А можно просо удалять и з ip-адресов точки, и просто сравнивать? Самый лобовой вариант!
Тотже Trunk, только не авторизованный %) | |
|
|
|
|
|
|
|
для: Транк
(03.08.2005 в 12:46)
| | это как раз не вариант, потому тчо не будет критериев по которым можно выделить диапазон (пресловутые точки) | |
|
|
|
|
|
|
|
для: [CHOL]Scorpion
(03.08.2005 в 12:52)
| | >....
>как и чем нужно обходить этот диапазон и сверять с адресом
>с которого пришёл человек
>.... | |
|
|
|
|
|
|
|
для: method
(03.08.2005 в 13:13)
| | Неужели не понятно, не нужно ничем ничего обходить.
Преобразуешь IP в integer, получается поядковое число.
Смотришь пределы, тоже предварительно переведёные в integer.
Задача сводится к простому сравнению:
if ($ip >= $ip['start'] && $ip<=$ip['stop']){
echo ("Извини мужик, тебе сюда нельзя");
}
ЗЫ, есдинственное что может придётся обходить, это база диапазонов. НО, в самом диапазоне ничего обходить не нужно. | |
|
|
|
|
|
|
|
для: method
(03.08.2005 в 04:57)
| | Можно разбить всё при помощи функции explode() и сравнивать каждый из диапазонов
<?php
list($ipw1,$ipw2,$ipw3,$ipw4) = explode(".","217.115.160.0");
list($ipq1,$ipq2,$ipq3,$ipq4) = explode(".","217.115.180.240");
list($ip1,$ip2,$ip3,$ip4) = explode(".","217.115.179.72");
if($ipw1<=$ip1 &&
$ipw2 <= $ip2 &&
$ipw3 <= $ip3 &&
$ipw4 <= $ip3 &&
$ipq1 >= $ip1 &&
$ipq2 >= $ip2 &&
$ipq3 >= $ip3 &&
$ipq4 >= $ip4) echo "Бан";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(03.08.2005 в 13:27)
| |
function 2int($ip) {
$a=explode(".",$ip);
return $a[0]*256*256*256+$a[1]*256*256+$a[2]*256+$a[3];
}
$ip = начало диапазона;
$ip['start'] = 2int($ip);
$ip = конец диапазона;
$ip['stop'] = 2int($ip);
$ip = $REMOTE_ADDR;
$ip['actual'] = 2int($ip);
if ($ip['actual'] >= $ip['start'] && $ip['actual'] <= $ip['stop']){
echo ("Мужик, есть место в Перу ... Вот не пойти ли тебе туда?!");
}
|
| |
|
|
|
|
|
|
|
для: [CHOL]Scorpion
(03.08.2005 в 13:34)
| | Спасибо Господа!!
>...
>Неужели не понятно, не нужно ничем ничего обходить
>...
Да не понятно!
Если я не знал на какой казе к этому диапазону
подъехать - мне преобразование строки в интегер
ну не о чём ни говорило...
вот такой вот я неУч..... | |
|
|
|