Преобразование ip в integer
1.
Димон (09.08.2009 / 22:06)
Необходимо преобразовать ip в integer тип спомощью функции ip2long ,но она бывает выдает отрицательное значение. Где то видел как это исправляют, но не могу найти. Подскажите плиз?
2.
Димон (09.08.2009 / 22:14)
Нашел
$ip = ip2long($_SERVER['REMOTE_ADDR']);
if($ip < 0) $ip += 4294967296;
3.
Вусал (10.08.2009 / 15:10)
или просто
$ip = (int)$ip;
4.
Димон (10.08.2009 / 18:03)
3. неа
у тип integer максимальное значение 2147483647
5.
Максим (10.08.2009 / 18:06)
я ваще делаю что-то вроде этого
function get_int_ip($ip) {
$ips = split("\.", $ip);
return $ips[3] + $ips[2] * 256 + $ips[1] * 256 * 256 + $ips[0] * 256 * 256 * 256;
}
6.
Димон (10.08.2009 / 18:11)
5. читай 2й пост
если нужно обратно из int в ip функция long2ip()
7.
Сергей (10.08.2009 / 18:23)
3, (int) возвращает отрицательное значение, если число отрицательное, а чтобы получить модуль числа юзай abs()
8.
Димон (10.08.2009 / 18:52)
7. про модуль верно, но вот что получается:
$ip = "192.168.100.68";
$ip = ip2long($ip);
if($ip<0) $ip = abs($ip);
echo long2ip($ip);
скрипт выводит 63.87.155.188 значит модуль нельзя использовать.
с проблемой разобрался еще во 2 посте.
тему можно закрывать
9.
Вусал (16.08.2009 / 00:03)
или как делает Вантуз
$ip = explode('.', $_SERVER['REMOTE_ADDR']);
$ips = $ip[0].$ip[1].$ip[2].$ip[3];
10.
PLEEROCK (16.08.2009 / 18:45)
a просто заменить точку западло? гг
11.
Phantom (17.08.2009 / 11:24)
ТАЛЫШ, так нельзя делать. Смотри что получается. Два фактически разных IP дадут одинаковый конечный результат: 11.22.33.44 и 1.122.33.44 . ну и как следствие данный способ не обратим. Во втором посте самый правильный вариант.
URL:
https://visavi.net/topics/318