Trucos prácticos

Realicemos ahora algo más potente. Vamos a verificar el tipo de navegador que el visitante de nuestro sitio utiliza. Para ello, accederemos a la información que el navegador del visitante nos envía, durante su petición HTTP. Esta información se almacena en una variable. Las variables son fáciles de identificar, ya que todas comienzan con un signo dólar. La variable que nos interesa aquí es $_SERVER['HTTP_USER_AGENT'].

Nota:

$_SERVER es una variable especial de PHP, que contiene toda la información relativa al servidor web. Es una variable reservada de PHP, y una superglobal. Consulte las páginas del manual que tratan de las Auto-globales (también conocidas como super-globales).

Para mostrar esta variable, simplemente se puede hacer :

Ejemplo #1 Mostrar el contenido de una variable (elemento de array)

<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>

Un resultado posible del script podría ser :

Mozilla/5.0 (Linux) Firefox/112.0

Hay muchos tipos de variables disponibles en PHP. En el ejemplo anterior, hemos mostrado un elemento de una variable Array. Los arrays pueden ser muy útiles.

$_SERVER es simplemente una variable que está automáticamente disponible en su script. Una lista de todas las variables que están disponibles se proporciona en la sección Variables reservadas o también se puede obtener una lista completa leyendo la salida de la función phpinfo() utilizada en el ejemplo de la sección anterior.

Se pueden añadir varios comandos PHP en una etiqueta PHP, y crear pequeños bloques de código que realizan operaciones más complejas que un simple mostrado. Por ejemplo, si queremos verificar que el navegador es de la familia Firefox, se puede hacer esto :

Ejemplo #2 Ejemplo utilizando las estructuras de control y las funciones

<?php
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
echo
'Está utilizando Firefox.';
}
?>

El resultado de este script, si está utilizando Firefox, será :

Está utilizando Firefox.

Aquí, introducimos varios nuevos conceptos. Tenemos una estructura if. Si está familiarizado con las sintaxis básicas del lenguaje C, esto no le sorprenderá. Si no conoce lo suficiente el lenguaje C o otro lenguaje cuya sintaxis sea similar a la anterior, sería mejor que leyera una introducción a PHP, y asimilara los primeros capítulos, o bien lea el capítulo dedicado a la referencia del lenguaje.

El segundo concepto que hemos introducido es la función str_contains(). str_contains() es una función interna de PHP, que determina la presencia de una cadena dada en otra. En nuestro caso, hemos buscado la cadena "Firefox" en la cadena $_SERVER['HTTP_USER_AGENT']. De lo contrario, devuelve false. Si devuelve true la estructura if recibe true y el código entre llaves {} se ejecuta. De lo contrario, el código no se ejecuta. No dude en experimentar con otros ejemplos, utilizando if, else, y otras funciones como strtoupper() y strlen(). Cada página de la documentación también contiene ejemplos. Si no está seguro del uso de estas funciones, debe leer la página del manual "cómo leer una definición de función" así como la sección sobre las funciones PHP.

Ahora podemos avanzar y mostrarle cómo utilizar el modo PHP, en medio del código HTML :

Ejemplo #3 Pasar del modo PHP al modo HTML y viceversa

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

Un ejemplo de resultado obtenido en este script es :

<h3>str_contains() ha devuelto true</h3>
<p>Está utilizando Firefox</p>

En lugar de utilizar un comando echo, para mostrar texto, se puede utilizar código HTML puro. El punto importante a tener en cuenta aquí es que la lógica de programación se conserva. Solo uno de los dos bloques HTML se mostrará, según el resultado de la función str_contains(). En otras palabras, depende de si la cadena Firefox ha sido encontrada o no.

add a note

User Contributed Notes 1 note

up
140
Declan Kelly
10 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