Longhorn PHP 2026 - Call For Papers

Algo útil

Ahora hagamos algo más útil. Vamos a comprobar qué tipo de navegador está usando el visitante. Para ello, comprobamos la cadena del agente de usuario que el navegador envía como parte de la petición HTTP. Esta información se almacena en una variable. Las variables siempre comienzan con un signo de dólar en PHP. La variable que nos interesa ahora es $_SERVER['HTTP_USER_AGENT'].

Nota:

$_SERVER es una variable especial reservada de PHP que contiene toda la información del servidor web. Se la conoce como superglobal. Consulte la página relacionada del manual sobre superglobals para obtener más información.

Para mostrar esta variable, puede hacer simplemente:

Ejemplo #1 Mostrar una variable (elemento de array)

<?php

echo $_SERVER['HTTP_USER_AGENT'];

?>

Una salida de ejemplo de este script podría ser:

Mozilla/5.0 (Linux) Firefox/112.0

Hay muchos tipos de variables disponibles en PHP. En el ejemplo anterior imprimimos un elemento de un array variable. Los arrays pueden ser muy útiles.

$_SERVER es solo una variable que PHP hace automáticamente disponible. Puede ver una lista en la sección Variables Reservadas del manual o puede obtener una lista completa de ellas mirando la salida de la función phpinfo() usada en el ejemplo de la sección anterior.

Puede poner múltiples sentencias PHP dentro de una etiqueta PHP y crear pequeños bloques de código que hacen más que un simple echo. Por ejemplo, si quiere comprobar si se está usando Firefox puede hacer esto:

Ejemplo #2 Ejemplo usando estructuras de control y funciones

<?php

if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
echo
'Está usando Firefox.';
}

?>

Una salida de ejemplo de este script podría ser:

Está usando Firefox.

Aquí introducimos un par de conceptos nuevos. Tenemos una sentencia if. Si está familiarizado con la sintaxis básica usada por el lenguaje C, esto debería parecerle lógico. De lo contrario, debería leer un libro introductorio de PHP o los primeros capítulos, o leer la parte de Referencia del Lenguaje del manual.

El segundo concepto que introdujimos fue la llamada a la función str_contains(). str_contains() es una función integrada en PHP que determina si una cadena dada contiene otra cadena. En este caso estamos buscando 'Firefox' (la llamada aguja) dentro de $_SERVER['HTTP_USER_AGENT'] (la llamada pajar). Si la aguja se encuentra dentro del pajar, la función devuelve true. De lo contrario, devuelve false. Si devuelve true, la expresión if se evalúa como true y se ejecuta el código dentro de sus {llaves}. De lo contrario, el código no se ejecuta. Siéntase libre de crear ejemplos similares, con if, else, y otras funciones como strtoupper() y strlen(). Cada página relacionada del manual contiene ejemplos también. Si no está seguro de cómo usar funciones, querrá leer tanto la página del manual sobre cómo leer una definición de función como la sección sobre funciones de PHP.

Podemos llevar esto un paso más allá y mostrar cómo puede entrar y salir del modo PHP incluso en medio de un bloque PHP:

Ejemplo #3 Mezclar ambos modos HTML y PHP

<?php
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
?>
<h3>str_contains() devolvió true</h3>
<p>Está usando Firefox</p>
<?php
} else {
?>
<h3>str_contains() devolvió false</h3>
<p>No está usando Firefox</p>
<?php
}
?>

Una salida de ejemplo de este script podría ser:

<h3>str_contains() devolvió true</h3>
<p>Está usando Firefox</p>

En lugar de usar una sentencia echo de PHP para mostrar algo, salimos del modo PHP y enviamos directamente HTML. El punto importante y potente a notar aquí es que el flujo lógico del script permanece intacto. Solo uno de los bloques HTML terminará siendo enviado al espectador dependiendo del resultado de str_contains(). En otras palabras, depende de si la cadena Firefox fue encontrada o no.

add a note

User Contributed Notes 1 note

up
140
Declan Kelly
11 years ago
Please note that Internet Explorer 11 no longer contains MSIE in its user agent string, for example on Windows 8 with IE11 I get the following:

Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

So if you want to include a test for IE11, the code above changes to: 

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE ||
    strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== FALSE) {
    echo 'You are using Internet Explorer.<br />';
}
?>
To Top