✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Encuentre la geolocalización usando la dirección IP de forma gratuita en PHP

298

Encontrar la geolocalización y la información del país de un usuario es necesario para la mayoría de los sitios web. Probablemente necesite mostrar contenido diferente según el país de un usuario, mostrar precios diferentes según los códigos de moneda del país, etc. En estos escenarios, debe encontrar la geolocalización de un usuario y servir el contenido en consecuencia.

En este artículo, le muestro cómo encontrar la geolocalización utilizando la dirección IP de un usuario en PHP. Vamos a utilizar el servicio API de geolocalización IP que es completamente gratuito.

Obtener geolocalización mediante dirección IP

En PHP podemos utilizar el servicio de ‘IP Geolocation API’ a través de cURL y Guzzle. Ambos son populares para llamar a servicios de API externos y obtener la respuesta. Dependiendo del flujo de su proyecto, puede usar cURL o Guzzle. En ambos casos, primero necesitamos obtener la dirección IP del usuario. Entonces, escriba el método a continuación que devolverá una dirección 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

El cURL viene por defecto con la instalación de PHP. No es necesario instalar ningún paquete por separado. Solo necesita asegurarse de que esté habilitado en su servidor antes de usarlo.

A través de cURL, daremos una llamada al punto final de ‘IP Geolocation API’ proporcionando la dirección IP del usuario e imprimiremos la respuesta.

<?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);

Obtendrá la salida en formato JSON como se muestra a continuación.

{
   "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 es un cliente HTTP de PHP para enviar solicitudes HTTP. Es una alternativa a cURL. Proporciona mucho código limpio y una mejor experiencia para los desarrolladores.

Al principio, debe instalar Guzzle usando Composer ejecutando el comando:

composer require guzzlehttp/guzzle

A continuación, escriba el código a continuación que llama a la API a través de 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);
}

Así es como obtenemos la Geolocalización usando la dirección IP en PHP. Comparta sus pensamientos o sugerencias en la sección de comentarios a continuación.

Artículos relacionados

Fuente de grabación: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More