![]() |
бага в самом PHP или подругому описать немогу
задача стоит так:
из БД mysql вытащить айпи адреса которые хранятся вот в таком виде "209861637" перевести их в hex и по 2 первым символам вывести dec пример на вин калькулятере вводим цифру 209861637 переводим в hex получаем C823C05 затем каждые 2 символа переводим обратно в dec C8 = 200 23 = 35 С0 = 192 5 = 5 для облегчения задачи пишу функцию <? ///////////////////////////////////////////// function dec_hex_ip($dec_ip) { $ip_hex = dechex($dec_ip); $var_while = 3; $i_while = 0; $a_while = 0; do { $ip_done_hex[$i_while] = substr($ip_hex, $a_while, 2); $ip_done_dec[$i_while] = hexdec($ip_done_hex[$i_while]); $a_while = $a_while + 2; } while(++$i_while <= $var_while); $ip_done = implode(".", $ip_done_dec); return $ip_done; }; //////////////////////////////////////////////// ?> затем функцию крепим в коду, который вытаскивает из БД все уникальные значения. (т.е. которые не могут быть одинаковые) function show_ip() { include "connect_db.php"; $result = mysql_query("SELECT DISTINCT ip_saddr FROM ulog", $linkdb) or die ("Invalid query"); while ($row = mysql_fetch_array($result /*MYSQL_NUM*/)) { echo dec_hex_ip($row[0])."<BR>"; echo $row[0]."<BR>"; } } запускаем все это дело и видим что после 114 строки видим вот такие значения 1412799023 84.204.14.14 1422659086 84.252.146.10 1425838602 127.0.0.1 2130706433 127.255.255.255 <-------- 114 строка. 2204857116 127.255.255.255 2362681035 127.255.255.255 2560872505 127.255.255.255 для проверки работоспособность функции копируем только всю функцию в другой файл и запускаем только его со значениями которые выше <? ///////////////////////////////////////////// function dec_hex_ip($dec_ip) { $ip_hex = dechex($dec_ip); $var_while = 3; $i_while = 0; $a_while = 0; do { $ip_done_hex[$i_while] = substr($ip_hex, $a_while, 2); $ip_done_dec[$i_while] = hexdec($ip_done_hex[$i_while]); $a_while = $a_while + 2; } while(++$i_while <= $var_while); $ip_done = implode(".", $ip_done_dec); return $ip_done; }; //////////////////////////////////////////////// echo "<br>".dec_hex_ip(1412799023); echo "<br>".dec_hex_ip(1422659086); echo "<br>".dec_hex_ip(1425838602); echo "<br>".dec_hex_ip(2130706433); echo "<br>".dec_hex_ip(2204857116); echo "<br>".dec_hex_ip(2362681035); echo "<br>".dec_hex_ip(2560872505); ?> и видим вот такой результат 84.53.154.47 84.204.14.14 84.252.146.10 127.0.0.1 131.107.115.28 140.211.166.203 152.163.208.57 для точной проверки проверяем на тип и количество строк данные поступающие из БД, и ненаходим ошибок... так в чем ошибка? неправильная интерпритация движка php ? |
xamelion
а спец функцией сложно воспользоваться? |
Еще б в рубли перевел :tease:
|
да и в рубли переведем.. +)
а что за спец функция... я же за php 4 день... |
xamelion
а вы уже установили хелп с ОФФ сайта PHP ? |
неа... у меня RPMы с FC3 и я там ничего не менял.
мне просто интересен сам факт того что функция отдельна работает, и притензий нет.. однако когда она работает с большими объемами информаци случается бага.. допустим я щас использую функцию ту, которая уже есть в php(хотя если ее кто нить напишет мне, будет вообще замечательно) однако... мне интересен в чем же ошибка, для того что бы не наступить в те же грабли. Для меня важно в данный момент именно ошибка, без разници моя это или php. я учусь писать, и попадись такая ситуация в другой ситуации можно и незаметить ошибку, т.к. сам сервер об ошибки несообщает но результат будет неверен. Vlad Drakula прошу прощения, но вряд ли я извлеку от этой хелпы какую нитьбудь помощь. я пользуюсь некоторыми сайтами и учебниками.. однако я непредставляю по какому параметру искать эту функцию... по слову функции? по разделу? математика? xamelion у тебя получится! я это знаю! |
long2ip
(PHP 4) long2ip - конвертирует (IPv4) Internet сетевой адрес в строку стандартного Internet-формата с точкой. Описание string long2ip (int proper_address) Функция long2ip() генерирует Internet-адрес в формате с точкой (т.е.: aaa.bbb.ccc.ddd) из соответствующего представления адреса. См. также ip2long(). Господа... Я поставил эту функцию и все заработало.. но почему ? (звонок в тех помощь майкрософта: у меня неглючит виндовс вообще, я что неправильно что то делаю?) |
Время: 17:34. |
Время: 17:34.
© OSzone.net 2001-