Как получить информацию о геолокации за пределами ПК & quot; LocalHost & quot ;?

Я хочу получить некоторую информацию о геолокации, используя внешний сервис (сервис веб-сайта), но это прекрасно работает только на моем компьютере (используя localhost) WampServer http клиент); Уже когда мой php-файл передается на удаленный хост (ПК), он не может получить эту информацию. Уже пробовал несколько сервисов хостов, но пока безуспешно.

PS: моя ссылка на сайт была http://ip-api.com/.

Вот мой код:

$ip = $_REQUEST['REMOTE_ADDR'];
$query = @unserialize(file_get_contents('http://ip-api.com/php/'.$ip));

if($query && $query['status'] == 'success') {

$regiao = $query['regionName'];
$cidade = $query['city'];
$isp = $query['isp'];
$sigla_regiao = $query['region'];
}
else {
echo '';
}

Итак, у кого-то есть идеи, почему этот API не работает на удаленном хосте?

Заранее спасибо.

0

Решение

Согласно сообщенной вами ошибке, file_get_contents Функция не может создать соединение с удаленным хостом. Может случиться так, что доступ к удаленным ресурсам для определенных функций отключен.

Вы можете попытаться получить доступ к удаленному URL с помощью cURL:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://ip-api.com/php" . $ipAddr);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec ($curl);
curl_close ($curl);

if (curl_errno($curl))
throw new \Exception(sprintf("Connection error %s: %s", curl_errno($curl), curl_error($curl)));

print_r(unserialize($content));
0

Другие решения

Если вы заинтересованы в другом провайдере, вы можете воспользоваться услугами https://geoip-db.com

Рабочий пример JSON:

<?php

$json = file_get_contents('https://geoip-db.com/json');
$data = json_decode($json);

print $data->country_code . '<br>';
print $data->country_name . '<br>';
print $data->state . '<br>';
print $data->city . '<br>';
print $data->postal . '<br>';
print $data->latitude . '<br>';
print $data->longitude . '<br>';
print $data->IPv4 . '<br>';

?>

Или обратный вызов JSONP с php:

<?php

$jsonp = file_get_contents('https://geoip-db.com/jsonp');
$data = jsonp_decode($jsonp);

print $data->country_code . '<br>';
print $data->country_name . '<br>';
print $data->state . '<br>';
print $data->city . '<br>';
print $data->postal . '<br>';
print $data->latitude . '<br>';
print $data->longitude . '<br>';
print $data->IPv4 . '<br>';

// Strip callback function name and parenthesis
function jsonp_decode($jsonp) {
if($jsonp[0] !== '[' && $jsonp[0] !== '{') {
$jsonp = substr($jsonp, strpos($jsonp, '('));
}
return json_decode(trim($jsonp,'();'));
}
?>
0

По вопросам рекламы [email protected]