Добрый день. Нужна помочь или подсказка как правильно реализовать определение города посетителя на сайте. есть куча статей и методов. в данным момент использую
<?php
function geo_info($ip)
{
$xml = "<ipquery><fields><city/></fields><ip-list>"
. "<ip>".$ip."</ip></ip-list></ipquery>";
$ch = curl_init("http://194.85.91.253:8090/geo/geo.html");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
$result = curl_exec($ch);
if(curl_errno($ch) != 0)
die("curl_errno(".curl_errno($ch)."), curl_error(".curl_error($ch).")");
curl_close($ch);
if (strpos($result, '<message>Not found</message>') !== false)
return false;
preg_match("/<city>(.*)<\/city>/", $result, $city);
return $city[1];
}
$city = geo_info($_SERVER['REMOTE_ADDR']); // Вернет город посетителя
$city=iconv("windows-1251","utf-8",$city);
?>
Понимаю что это никак не относится к опенкарту. но все же.
какие проблемы бывают:
с мобильньков порой операторы назначают ip других городов. в итоге человек находится на камчатке, а ему выдает что он во Владивостоке
с Казахстаном вообще беда, города никак не определяет.
нужна какая то база, что бы ее подключить к опенкарту. что бы посетителю выдавало верный город. хотя бы в 95% случаев