ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Проверить IP по маске
  #1  
Старый 15.03.2010, 08:09
Аватар для prescott
prescott
Участник форума
Регистрация: 28.07.2008
Сообщений: 158
Провел на форуме:
728470

Репутация: 115
По умолчанию Проверить IP по маске

Есть маски типа 83.151.0.0/20

Считается как то так: http://www.opennet.ru/ipcalc.shtml?ip=83.151.0.0&netmask=/20&submit=

Как в PHP просто и главное точно проверить подходит ли IP под эту маску?
 
Ответить с цитированием

  #2  
Старый 15.03.2010, 09:11
Аватар для prescott
prescott
Участник форума
Регистрация: 28.07.2008
Сообщений: 158
Провел на форуме:
728470

Репутация: 115
По умолчанию

Маска такого вида не определяет диапазон типа 83.151.0.0 - 83.151.0.20

Вот нашел более менее понятное объяснение алгоритма расчета маски: http://www.cap-design.ru/ksptp/5_2_4.php,
а вот и функция, похожая на верную:
PHP код:
function Check_Ip($Ip_For_Search$Allow_Ip_Range)
{
    
$ip_count = array(32=>031=>130=>329=>728=>1527=>3126=>6325=>12724=>25523=>51122=>102321=>204720=>4095,
                      
19=>819118=>1638317=>3276716=>6553515=>13107114=>26214313=>52428712=>104857511=>2097151,
                      
10=>41943039=>83886078=>167772157=>335544316=>671088635=>1342177274=>2684354553=>536870911,
                      
2=>1073741823);
   
    
$Ip_For_Search_Converted ip2long($Ip_For_Search);
    
$Result FALSE;
    foreach ( 
$Allow_Ip_Range as $Value )
    {
      list(
$ip$prefix)                    = preg_split('/\//',$Value);
      
$Range_Start ip2long($ip);
      
$Range_End   $Range_Start $ip_count["$prefix"];
      echo 
"";
      if ( 
$Ip_For_Search_Converted >= $Range_Start && $Ip_For_Search_Converted <= $Range_End )
      {
        return 
TRUE;
      }
    }
    return 
$Result;

 
Ответить с цитированием

  #3  
Старый 15.03.2010, 09:38
Аватар для LStr1ke
LStr1ke
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
Провел на форуме:
1455812

Репутация: 150
По умолчанию

А такая не пододит?
PHP код:
# usage: checkIp("ip to check","mask"); 
function checkIp($ip,$mask) {  
list(
$mask_ip,$mask_max) = explode("/",$mask);  
$ip_mas explode(".",$mask_ip); 
if(
preg_match("#($ip_mas[0])\.($ip_mas[1])\.($ip_mas[2])\.(\d{1,3})$#i",$ip,$need))   
        {  
            if(
$need[4] <= $mask_max) return true; else return false
        }else return 
false;  


if(
checkIp("83.151.0.12","83.151.0.0/20")) { 
echo 
"Ip eq MASK :)"
}else echo 
"Bad IP :("
 
Ответить с цитированием

  #4  
Старый 15.03.2010, 19:17
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

prescott Вроде задача была та же и это работало; https://forum.antichat.ru/showpost.php?p=1162648&postcount=9338
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПРОВЕРКА почти всех уязвимостей и багов! _GaLs_ Избранное 8 14.06.2010 12:00
Секретные Коды _-[A.M.D]HiM@S-_ Сотовый фрикинг 98 09.06.2010 16:01
On-line проверки(вирусы, фаерволы) Elekt Защита ОС: вирусы, антивирусы, файрволы. 28 18.01.2010 16:15
Проверка файла на вирусы онлайн b3 Болталка 17 08.01.2010 23:47
Коды silveran Сотовый фрикинг 4 18.10.2005 14:37



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ