Obtener navegador, ip y localización del visitante en PHP.

Rate this post

Es común ver que cuando navegamos por internet, nos muestran diferente contenido dependiendo del navegador utilizado o desde el país que accedemos.

Para ver como se pueden obtener estos datos vamos a hacer uso del array del sistema $_SERVER que contiene información, tales como cabeceras, rutas y ubicaciones de script.

La información que contiene el array lo podemos ver en al documentacion de php https://www.php.net/manual/es/reserved.variables.server.php

Nombre del servidor: $_SERVER[‘SERVER_NAME’]

Pagina web actual: $_SERVER[‘PHP_SELF’]

Pagina web de donde viene el visitante: $_SERVER[‘HTTP_REFERER’]

Navegador del visitante: $_SERVER[‘HTTP_USER_AGENT’];

IP publica del visitante: $_SERVER[‘REMOTE_ADDR’];

Con el siguiente código vemos un ejemplo de las variables citadas:

<?php
echo "<h1>Estaditicas del sitio:</h1>";
echo $_SERVER['SERVER_NAME'];

//Recuperar informacion del visitante de la variabler globa $_SERVER
echo "<h4>nombre de la pagina web actual</h4>";
echo $_SERVER['PHP_SELF'];

echo "<h4>Pagina web de donde viene el visitante</h4>";
echo $_SERVER['HTTP_REFERER'];

echo "<h4> Nombre del navegador</h4>";
echo $_SERVER['HTTP_USER_AGENT'];

echo "<h4>Direccion Ip del visitante</h4>";
echo $_SERVER['REMOTE_ADDR'];
?>
HTTP_USER_AGENT

Con estos valores podemos ver por ejemplo que el navegador usado es el Chrome, con lo que podríamos mostrar el contenido que quisiéramos.

También podemos ver la ip del visitante, pero no sabemos donde esta ubicada, para eso lo que vamos es a utilizar una api de geolocalización.

Viendo todas las api libres la que mas me ha gustado es https://api.ipgeolocationapi.com/geolocate/ , que genera un json y nos viene perfecto para utilizar lo aprendido con esta entrada http://programacionconphp.com/leer-un-json-desde-php/

Pasaremos la variable $_SERVER[‘REMOTE_ADDR’] con la url a el método file_get_contents y con json_decode creamos el json.

Después nos quedaremos con las variables $items[«continent»] y $items[«name»], para obtener el continente y el pais con el siguiente código.

//Utilizamos api de geolocalizacion
$data = @file_get_contents("https://api.ipgeolocationapi.com/geolocate/" . $_SERVER['REMOTE_ADDR']);
$items = json_decode($data, true);

echo "<p>La visita se realiza desde : ";
echo $items["continent"];
echo ", ";
echo $items["name"];
echo "</p>";

Con este código podemos ver como el acceso se realiza desde Europa, España.

$_SERVER[‘REMOTE_ADDR’]

El código completo del ejemplo seria el siguiente:

<?php
echo "<h1>Estadisticas del sitio:</h1>";
echo $_SERVER['SERVER_NAME'];

//Recuperar informacion del visitante de la variabler globa $_SERVER
echo "<h4>nombre de la pagina web actual</h4>";
echo $_SERVER['PHP_SELF'];

echo "<h4>Pagina web de donde viene el visitante</h4>";
echo $_SERVER['HTTP_REFERER'];

echo "<h4> Nombre del navegador</h4>";
echo $_SERVER['HTTP_USER_AGENT'];

echo "<h4>Direccion Ip del visitante</h4>";
echo $_SERVER['REMOTE_ADDR'];

//Utilizamos api de geolocalizacion
$data = @file_get_contents("https://api.ipgeolocationapi.com/geolocate/" . $_SERVER['REMOTE_ADDR']);
$items = json_decode($data, true);

echo "<p>La visita se realiza desde : ";
echo $items["continent"];
echo ", ";
echo $items["name"];
echo "</p>";


Y podemos verlo en funcionamiento en el siguiente enlace: http://programacionconphp.com/dev/stats/

Deja un comentario