Detector de navegadores WAP

Normalmente los portales wap están alojados en un dominio de tercer nivel del tipo http://wap.midominio.com. Lo que a continuación propongo es una solución profesional que ya usan algunos portales y es una aplicación que detecta desde la página principal, si el usuario ha accedido desde una navegador wap o html, y redirigirlo a la version wml o html respectivamente.

Antes de nada, me gustaría aclarar que la solución de usar javascript no es viable, puesto que javascript es un lenguaje que se interpreta y se ejecuta en el navegador del usuario, pero no todos los navegadores wap permiten el uso de javascript.

La clave de este asunto está en que tanto los navegadores wap como los navegadores html le dicen al servidor el tipo de información que esperan recibir mediante el tipo mime.

Dicha información es guardada en una variable de servidor llamada HTTP_ACCEPT.
El valor de HTTP_ACCEPT para los navegadores wap es text/vnd.wap.wml, para los navegadores html es */* (Internet explorer 6 and Netscape 6).

Podemos entender que las últimas versiones, al menos, de los navegadores html más populares sean genéricos a la hora de aceptar cualquier tipo de archivo del servidor (html, shtml, php, cgi, asp, cfm, cgi, xml…) , mientras que los navegadores wap en ese sentido son específicos al aceptar sólo información de tipo wml.

A continuación muestro el código php de un index.php que contiene tanto la versión wap como html en el mismo archivo.

<?
$dime=$HTTP_ACCEPT;
if (ereg("wap.wml",$dime)){
header("Content-Type: text/vnd.wap.wml");
echo ‘<?xml version="1.0"?>’;
?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<!-detector wap por Miguel Cruz, [email protected] –>
<card id="MainCard" title="Bienvenido">
<p align="center">
Hola usuario de navegador wap</p>
</card>
</wml>
<?
}else{
print " Hola usuario de navegador html ";
}
?>

Y si se desea redirigir al usuario a una u otra versión, este es el código del index.php, donde sólo hay que modificar las localizaciones url de ambas versiones.

<?
$dime=$HTTP_ACCEPT;
# By Miguel Cruz Martinez, [email protected]
if (ereg("wap.wml",$dime))
header(‘Location: http://www.miurl_wap/index.wml’);
else
header(‘Location: http://www.miurl_html/index.html’);
?>

Deja un comentario