Получение ip базы logofon
<?php /** * Получение ip базы логофона * автор: Nc_Soft * 11.12.09 */ //переменная содержащая время обновления базы $GLOBALS['last_mod'] = ''; //открываем сеанс curl $ch = curl_init('http://www.logofon.ru/xml/ips.xml'); curl_setopt($ch, CURLOPT_USERAGENT, 'snippets ip bot :)'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //функция обратного вызова, которая будет проверять заголовки curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'curlHeaderCallback'); //получение данных $xml_data = curl_exec($ch); //закрываем curl curl_close($ch); //функция обратного вызова, ищет Last-Modified function curlHeaderCallback($ch, $header) { //чекаем Last-Modified $s = explode(': ', $header, 2); if ($s[0] == 'Last-Modified') $GLOBALS['last_mod'] = trim($s[1]); return strlen($header); } /*Имея $GLOBALS['last_mod'] в таком виде: Mon, 07 Dec 2009 21:43:14 GMT мы можем проверять актуальность нашей базы, чтобы не обновляться лишний раз для справки: чтобы получить timestamp надо сделать так echo strtotime($GLOBALS['last_mod']); */ //допустим, надо обновиться, для этого парсим xml файл //для примера выведу всех опсосов в табличках //в качестве парсера юзаем правильные функции, а не регулярки!!! $xml = simplexml_load_string($xml_data); foreach ($xml->operator as $opsos) : ?> <hr /> <table border="1"> <tr> <td>ид</td> <td>опсос</td> <td>страна</td> <td>сокращение страны</td> </tr> <tr> <td><?=$opsos['id'];?></td> <td><?=$opsos['name'];?></td> <td><?=$opsos['country'];?></td> <td><?=$opsos['tld'];?></td> </tr> <?php //выводим диаппазоны foreach ($opsos->range as $range) : ?> <tr> <td colspan="2"><?=long2ip($range['ip1']);?></td> <td colspan="2"><?=long2ip($range['ip2']);?></td> </tr> <?php endforeach; ?> </table> <?php endforeach; /* Как видите, все просто и удобно. А при помощи этого сниппета можно легко импортировать эту базу в свои проекты */
11 декабря 2009, 08:44