<?php
include_once "config.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) {
$ids++;
mysql_query("INSERT INTO `cat_ip_name` SET `ids` = '".$ids."', `operator` = '".$opsos['name']."', `country` = '".$opsos['country']."', `coun` = '".$opsos['tld']."'");
//выводим диаппазоны
foreach ($opsos->range as $range) {
mysql_query("INSERT INTO `cat_ip` SET `ids` = '".$ids."', `ip1` = '".$range['ip1']."', `ip2` = '".$range['ip2']."'");
}
}
/*mysql_query("DELETE FROM `cat_ip`");
mysql_query("DELETE FROM `cat_ip_name`");*/
/*
Как видите, все просто и удобно.
А при помощи этого сниппета можно легко импортировать
эту базу в свои проекты
*/
?>