php

PHP – Obtener navegador web e información de usuario

Resumen:

Obtener el nombre del navegador de un usuario que visita una página con PHP; además intentar parsearlo / interpretarlo para conocer el sistema operativo y dispositivo.

Información del navegador con PHP

La información del navegador se encuentra en $_SERVER["HTTP_USER_AGENT"] y su salida es algo como:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36

Esa es toda la información que se tiene sobre el navegador (ya que la IP está en otro lugar); en ella está incluido el sistema operativo y dispositivo, entre otros.

Recuerda que esta información no siempre es confiable, es decir, se puede modificar desde el cliente o puede incluso no estar disponible.

Además de eso, es un poco complejo parsear la cadena así que hay varias librerías que pueden hacer el trabajo por nosotros.

Parsear información de navegador con PHP

Como lo dije, a partir del User-Agent podemos intuir muchas cosas como sistema operativo o dispositivo, además de la familia del navegador web, todo esto obtenido desde PHP.

Existen muchas librerías y en este caso usaré esta, la cual puedes instalar con Composer usando:

composer require ua-parser/uap-php

Si no tienes composer mira un tutorial de instalación, y si tienes un proyecto de PHP que no está adaptado a composer mira cómo adaptarlo.

Uso de uap-php

Una vez que hayas descargado la librería con Composer incluye el autoload:

require_once "vendor/autoload.php"

Ahora mira este ejemplo:

<?php
/**
 * Demostrar uso de librería uap-php
 *
 * https://parzibyte.me/blog
 */require_once "vendor/autoload.php";
use UAParser\Parser;

# Podría venir de otro lado
$agenteDeUsuario = $_SERVER["HTTP_USER_AGENT"];
$parseador = Parser::create();
$resultado = $parseador->parse($agenteDeUsuario);

$familiaNavegador = $resultado->ua->family; // Chrome, Firefox, Safari, Edge
$navegador = $resultado->ua->toString();
$dispositivo = $resultado->device->family;
$familiaSistema = $resultado->os->family;
$sistema = $resultado->os->toString();
$completo = $resultado->toString();

?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Información de navegador</title>
</head>
<body>
    <strong>Familia de navegador: </strong> <?php echo $familiaNavegador ?><br>
    <strong>Navegador: </strong> <?php echo $navegador ?><br>
    <strong>Dispositivo: </strong> <?php echo $dispositivo ?><br>
    <strong>Familia de OS: </strong> <?php echo $familiaSistema ?><br>
    <strong>Sistema operativo: </strong> <?php echo $sistema ?><br>
    <strong>Información completa: </strong> <?php echo $completo ?><br>
</body>
</html>

Debemos crear un parseador e invocar al método parse, pasándole la cadena del agente de usuario.

Esta cadena puede ser tomada de $_SERVER como lo mostré anteriormente, o de otro lugar. Por ejemplo, podrías hacer una API que indique los detalles del navegador usando PHP, la cual recibiría esta cadena desde el cliente.

Después de eso puedes acceder a ua, device y os.

Nota: puedes ver más sobre la librería en el repositorio de GitHub.

Ejemplos de información que se puede obtener con PHP

Finalmente veamos algunos ejemplos en distintos navegadores web:

Navegador Chrome sobre Android 9
Navegador Chrome sobre Windows 10
Navegador Edge corriendo sobre Windows 10
Firefox sobre Android 9
Firefox sobre Windows 10

Como ves, Chrome en Android envía el nombre del dispositivo mientras que Firefox no.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

5 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.