если вы делаете звонок с вашего сервера это получить их IP вам нужно сделать что-то подобное, чтобы получить пользовательский IP и послал его в freegeoip
<script>
function myIP() {
if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);
xmlhttp.send();
hostipInfo = xmlhttp.responseText.split("\n");
for (i=0; hostipInfo.length >= i; i++) {
ipAddress = hostipInfo[i].split(":");
if (ipAddress[0] == "IP") return ipAddress[1];
}
return false;
}
var ip = myIP();
jQuery.ajax({
url: 'http://freegeoip.net/json/'+ip.replace(' ',''),
type: 'POST',
dataType: 'jsonp',
success: function(location) {
$("div.country").html(location.country_name);
}
});
</script>
<div class="country"></div>
becaus пример выше, зависит в сервис http://api.hostip.info/get_html.php
вы можете добавить свой собственный упрощенно PHP скрипт, чтобы получить пользовательский адрес IP-Виль
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
echo $ip;
обновление снова вы можете получить всю информацию без их ф просто с геолокации и обратного геокодирования пример приложения
интерфейс
<script>
$(document).ready(function() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
function showPosition(position) {
jQuery.ajax({
url: 'geocoder.php',
type: 'POST',
data:position,
dataType: 'json',
success : function(response) {
$(".country").text(response.address.country);
$(".postal_code").text(response.address.postcode);
}
})
}
})
</script>
<div class="country"></div>
<div class="postal_code"></div>
geocoder.php
<?php
$lat = $_POST['coords']['latitude'];
$long = $_POST['coords']['longitude'];
$url = "http://nominatim.openstreetmap.org/reverse?format=json&lat=".$lat."&lon=".$long;
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'examples');
$query = curl_exec($curl_handle);
curl_close($curl_handle);
$jsondata = json_decode($query,true);
echo json_encode($jsondata);
?>
вы работаете его с сервера или локальной среде? –
Сценарий вызывается с сервера .. Ссылка вызывается локально браузером. – karadayi