ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

05.03.2007, 23:04
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме: 4610226
Репутация:
1332
|
|
2BlackLogic ты имеешь представление о хранении целых чисел в памяти? я про современную архитектуру. простой пример, -1 и 255 типа char (один байт) будут выглядеть в памяти одинаково, в то же время (-1<255)==true понимаешь к чему я клоню? ip2long возвращает значение ip адреса (целое знаковое число размером в 4 байта). пхп его обрабатывает и у себя и на более низком уровне сравнивает два знаковых числа, так как в коде пхп они были обьявлены как signed, то сравнение идет уже действительно двух знаковых чисел. и если unsigned результат ip2long был больше (но не более чем на 2^31-1  ) чем 2^31-1 к примеру, то это число считается уже отрицательным. а отрицательное меньше положительного в результате, хотя как тебе кажется - больше 
---
кстати, так к слову, если есть число a, то -a получается простой инверсией битов и прибавлением единицы.
Последний раз редактировалось ZaCo; 05.03.2007 в 23:10..
|
|
|

05.03.2007, 23:08
|
|
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме: 5301021
Репутация:
1879
|
|
Терь понятно.
Так как же быть? Кому верить то теперь?! 
|
|
|

05.03.2007, 23:16
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме: 4610226
Репутация:
1332
|
|
2BlackLogic ну я хз конечно, но учитывая что ни один из приведенных кодов не работает, то видимо мой) тем более такая иллюстрация "алгоритма" предложенного кезом выглядит нагляднее 
|
|
|

06.03.2007, 17:28
|
|
Новичок
Регистрация: 09.01.2007
Сообщений: 9
Провел на форуме: 28497
Репутация:
21
|
|
Ух... в какие степи вас занесло...
В общем... Использовал
Код:
<?
$first="0.0.0.0";
$last="255.255.255.254";
$check="192.0.34.166";
//
$check_d=sprintf("%u",ip2long($check));
$first_d=sprintf("%u",ip2long($first));
$last_d=sprintf("%u",ip2long($last));
//
if( ($check_d>=$first_d) && ($check_d<=$last_d) ) {
//xek
echo 'xek'; }
?>
этот способ... (ИМХО самый короткий и понятный)
Рассматривал только те примеры в которых идет выборка ip из диапазона  )
Sorry за кривой топик " Сравнение..." но нужно было выяснить именно принадлежность к диапазону...
ВСЕМ спасибо за ответы...
|
|
|

09.03.2007, 08:14
|
|
Banned
Регистрация: 05.12.2005
Сообщений: 982
Провел на форуме: 4839935
Репутация:
1202
|
|
Сообщение от BlackLogic
PHP код:
$your_long_ip = ip2long($ip);
if ( ($your_long_ip >= ip2long($ar[0])) && ($your_long_ip <= ip2long($ar[1])) ) {
http://packetstormsecurity.org/0608-advisories/ip2long.txt
ip2long - не самый безопасный способ. только если кроме REMOTE_ADDR не будет больше ничего передаваться.
|
|
|

27.04.2007, 21:48
|
|
Участник форума
Регистрация: 03.05.2006
Сообщений: 167
Провел на форуме: 125505
Репутация:
116
|
|
Вот такой вот скриптик сварганил:
PHP код:
<?php
$ip = '10.10.10.10';
$bZone = array('10', '10', '1', '1');
$eZone = array('10', '10', '255', '255');
$info = explode('.', $ip);
$error = 0;
for ($i = 0; $i < 4; $i++) {
if (!($info[$i] >= $bZone[$i] && $info[$i] <= $eZone[$i])) {
$error = 1;
continue;
}
}
echo ($error) ? 'Не принадлежит' : 'Принадлежит';
?>
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|