Ваш IP: 54.82.73.21
К сожалению, не можем определить координаты.
 
Чтобы оставлять сообщения, войдите под своим именем!

Разработка

ПользовательСообщение


lexam

1

SDK на языке PHP


lexam

2

Предлагаю использовать SOAP ,без WSDL документа, чтобы свести к минимуму настройку сервака.

http://phpclub.ru/detail/article/soap

 

правим под тебя этот код…

<?php  
 
$client = new SoapClient(NULL,  
        array(  
        "location" => "http://66.28.98.121:9090/soap",  
        "uri"      => "urn:xmethods-delayed-quotes",  
        "style"    => SOAP_RPC,  
        "use"      => SOAP_ENCODED  
           ));  
 
print($client->__call(  
        /* Имя SOAP-метода */  
        "getQuote",  
        /* Параметры */  
        array(  
            new SoapParam(  
                /* Значение параметра */  
                "ibm",  
                /* Имя параметра */  
                "symbol"  
        )),  
        /* Опции */  
        array(  
            /* Пространство имен SOAP-метода */  
            "uri" => "urn:xmethods-delayed-quotes",  
            /* HTTP-заголовок SOAPAction  для SOAP-метода */  
            "soapaction" => "urn:xmethods-delayed-quotes#getQuote"  
        )). "\n");  
?>  


admin

3

 Если вам в дверь ломятся бандиты, попробуйте ломиться в нее с другой стороны. Это озадачит злоумышленников…


vyacheslavchulkin

4

<?

/* Чтобы не заморачиваться с XML был взят готовый класс xmlToArray который преобразует XML в массив */
class XmlToArray
{
var $xml='';
function XmlToArray($xml)
{
$this->xml = $xml;
}
function _struct_to_array($values, &$i)
{
$child = array();
if (isset($values[$i]['value'])) array_push($child, $values[$i]['value']);
while ($i++ < count($values)) {
switch ($values[$i]['type']) {
case 'cdata':
array_push($child, $values[$i]['value']);
break;

case 'complete':
$name = $values[$i]['tag'];
if(!empty($name)){
$child[$name]= ($values[$i]['value'])?($values[$i]['value']):'';
if(isset($values[$i]['attributes'])) {
$child[$name] = $values[$i]['attributes'];
}
}
break;
case 'open':
$name = $values[$i]['tag'];
$size = isset($child[$name]) ? sizeof($child[$name]) : 0;
$child[$name][$size] = $this->_struct_to_array($values, $i);
break;
case 'close':
return $child;
break;
}
}
return $child;
}
function createArray()
{
$xml = $this->xml;
$values = array();
$index = array();
$array = array();
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parse_into_struct($parser, $xml, $values, $index);
xml_parser_free($parser);
$i = 0;
$name = $values[$i]['tag'];
$array[$name] = isset($values[$i]['attributes']) ? $values[$i]['attributes'] : '';
$array[$name] = $this->_struct_to_array($values, $i);
return $array;
}
}

function get_geo($ip)
{
if($xml = file_get_contents('http://geoip.elib.ru/cgi-bin/g…..'#039;)) // Делаем запрос к серверу
{
$xmlObj = new XmlToArray($xml); // преобразуем xml в массив
$arrayData = $xmlObj->createArray();
if(isset($arrayData['GeoIP']['GeoAddr'][0]['Error'])) // если есть ошибки выбрасываем исключения
{
switch ($arrayData['GeoIP']['GeoAddr'][0]['Error'])
{
case 0:;
break;
case 10:
throw new Exception('Geo_IP: Неверная длина указанного адреса');
break;
case 11:
throw new Exception('Geo_IP: Неверный формат адреса');
break;
case 150:
throw new Exception('Geo_IP: Внутренняя ошибка сервера');
break;
case 200:
throw new Exception('Geo_IP: Ошибка соединения с сервером');
break;
case 205:
throw new Exception('Geo_IP: Нет данных по запросу');
break;
}
}
return $arrayData['GeoIP']['GeoAddr'][0]; // возвращаем полученные данные в виде массива
}
else
{
throw new Exception('Geo_IP: Нет связи с сервером'); // если ответа от сервера не дождались вбрасываем исключение
}

}

/* ПРИМЕРЫ */
echo '<pre>';

try
{
print_r(get_geo($_SERVER['REMOTE_ADDR'])); /// Текущий IP
}
catch (Exception $e)
{
echo $e->getMessage();
}

try
{
print_r(get_geo(' ')); // Ошибочный запрос
}
catch (Exception $e)
{
echo $e->getMessage();
}
echo '</pre>';

 

 ?>


vyacheslavchulkin

5

В принципе все просто, функция возвращает массив и вбрасывает исключение, по остальным вопросам гуглите 

php array и php try  


admin

6

 Если вам в дверь ломятся бандиты, попробуйте ломиться в нее с другой стороны. Это озадачит злоумышленников…


vyacheslavchulkin

7

Есть еще дополнение, чтобы писать меньше кода, можно сделать ответ сервера вместо XML в JSON, тогда будет удобнее обрабатывать в php, python, javascript и прочих языках. Вместо класса парсинга XML потребуестся всего одна функция которая расшифрует JSON. 

такая конструкция куда лучше 

{"Lat":"58.596081","Lon":"49.662659","Town":"Киров","Country":"Россия","Region":"Кировская область","TZ":"4"} 


admin

8

 Если вам в дверь ломятся бандиты, попробуйте ломиться в нее с другой стороны. Это озадачит злоумышленников…


admin

9

 Если вам в дверь ломятся бандиты, попробуйте ломиться в нее с другой стороны. Это озадачит злоумышленников…


vyacheslavchulkin

10
[
	{
		ip: "87.255.23.236",
		Lat: "55.88781",
		Lon: "37.44418",
		Town: "Химки"
	}, 
	{
		ip: "213.252.105.46",
		Lat: "55.755787",
		Lon: "37.617634",
		Town: "Москва"
	},
	{
		ip: "387.255.23.236",
		Error: "11"
	}
]

То есть массив [0,1,2,3, ... , n] в который вложены объекты { "a" : "…", "b" : "…" }


admin

11

 Если вам в дверь ломятся бандиты, попробуйте ломиться в нее с другой стороны. Это озадачит злоумышленников…