в контреллере создаем акшен называем как хотим
Код: Выделить всё
public function ActionGet_ip_info($ip = null) {
$postData = "
<ipquery>
<fields>
<all/>
</fields>
<ip-list>
<ip>$ip</ip>
</ip-list>
</ipquery>
";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://194.85.91.253:8090/geo/geo.html');
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$responseXml = curl_exec($curl);
curl_close($curl);
if (substr($responseXml, 0, 5) == '<?xml') {
$ipinfo = new SimpleXMLElement($responseXml);
//echo $ipinfo->ip->city; // город
//echo $ipinfo->ip->region; // регион
//echo $ipinfo->ip->district; // федеральный округ РФ
return $ipinfo->ip;
}
return false;
}
вставляем где необходимо вызов функции и получаем xml объект
Код: Выделить всё
$ip_info = $this->actionGet_ip_info($_SERVER[''REMOTE_ADDR]);
// Немного строгой типизации ))
$city = (string) $ip_info->city;
//Можно запомнить название города, сохранив переменную в текущую сессию
Yii::app()->session['city'] = $city;