✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Encontre geolocalização usando endereço IP gratuitamente em PHP

172

Encontrar a geolocalização e as informações do país de um usuário é necessário para a maioria dos sites. Provavelmente, você precisa mostrar conteúdo diferente com base no país de um usuário, mostrar preços diferentes de acordo com os códigos de moeda do país, etc. Nesses cenários, você precisa encontrar a geolocalização de um usuário e servir o conteúdo de acordo.

Neste artigo, mostrarei como encontrar geolocalização usando o endereço IP de um usuário em PHP. Vamos usar o serviço IP Geolocation API, que é totalmente gratuito.

Obtenha geolocalização usando endereço IP

Em PHP, podemos usar o serviço de ‘IP Geolocation API’ por meio de cURL e Guzzle. Ambos são populares para chamar serviços de API externos e obter a resposta deles. Dependendo do fluxo do seu projeto, você pode usar cURL ou Guzzle. Em ambos os casos, primeiro precisamos obter o endereço IP do usuário. Portanto, escreva o método abaixo que retornará um endereço IP.

<?php
// get user's IP address
function getUserIpAddr() {
    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'];
    }
    return $ip;
}

Usando cURL

O cURL vem por padrão com a instalação do PHP. Não há necessidade de instalar nenhum pacote separadamente. Você só precisa se certificar de que está habilitado em seu servidor antes de usá-lo.

Por meio do cURL, faremos uma chamada para o endpoint de ‘IP Geolocation API’ fornecendo o endereço IP do usuário e imprimiremos a resposta.

<?php
$ip_address = getUserIpAddr();
  
$url = "https://api.ipgeolocationapi.com/geolocate/$ip_address";
$ch = curl_init();  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$response = curl_exec($ch);
$arr_result = json_decode($response);
print_r($arr_result);

Você obterá a saída no formato JSON semelhante a abaixo.

{
   "continent": "Asia",
   "address_format": "{{recipient}}n{{street}}n{{region}}n{{city}} {{postalcode}}n{{country}}",
   "alpha2": "IN",
   "alpha3": "IND",
   "country_code": "91",
   "international_prefix": "00",
   "ioc": "IND",
   "gec": "IN",
   "name": "India",
   "national_destination_code_lengths": [
     2
   ],
   "national_number_lengths": [
     10
   ],
   "national_prefix": "0",
   "number": "356",
   "region": "Asia",
   "subregion": "Southern Asia",
   "world_region": "APAC",
   "un_locode": "IN",
   "nationality": "Indian",
   "postal_code": true,
   "unofficial_names": [
     "India",
     "Indien",
     "Inde",
     "インド"
   ],
   "languages_official": [
     "hi",
     "en"
   ],
   "languages_spoken": [
     "hi",
     "en"
   ],
   "geo": {
     "latitude": 20.593684,
     "latitude_dec": "23.4060115814209",
     "longitude": 78.96288,
     "longitude_dec": "79.45809173583984",
     "max_latitude": 35.5087008,
     "max_longitude": 97.3953587,
     "min_latitude": 6.4626999,
     "min_longitude": 68.1097,
     "bounds": {
       "northeast": {
         "lat": 35.5087008,
         "lng": 97.3953587
       },
       "southwest": {
         "lat": 6.4626999,
         "lng": 68.1097
       }
     }
   },
   "currency_code": "INR",
   "start_of_week": "monday"
 }

Usando Guzzle

Guzzle é um cliente PHP HTTP para enviar requisições HTTP. É uma alternativa ao cURL. Ele fornece muito código limpo e uma melhor experiência para os desenvolvedores.

Primeiramente, você precisa instalar o Guzzle usando o Composer executando o comando:

composer require guzzlehttp/guzzle

Em seguida, escreva o código abaixo que chama a API por meio do Guzzle.

<?php
require_once "vendor/autoload.php";
  
use GuzzleHttpClient;
  
$ip_address = getUserIpAddr();
  
$client = new Client();
  
$response = $client->request('GET', 'https://api.ipgeolocationapi.com/geolocate/'.$ip_address);
  
if($response->getStatusCode() == 200) {
    $body = $response->getBody();
    $arr_body = json_decode($body);
    print_r($arr_body);
}

É assim que obtemos a geolocalização usando o endereço IP em PHP. Por favor, compartilhe suas idéias ou sugestões na seção de comentários abaixo.

Artigos relacionados

Fonte de gravação: artisansweb.net

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação