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, mcruz@signo-net.com -->
<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, mcruz@signo-net.com
if (ereg("wap.wml",$dime))
header('Location: http://www.miurl_wap/index.wml');
else
header('Location: http://www.miurl_html/index.html');
?>
|