- Inicio »
- Código fuente »
- Redireccionar automáticamente a la web para móviles en PHP
Publicado por : Ignacio Cisneros
martes, 5 de octubre de 2010
Cuando un cliente nos pide que desarrollemos una versión de su web adaptada a dispositivos móviles, lógicamente, quiere que al entrar con su móvil vea directamente la página web adaptada. Pues bien, hacer esto en PHP está tirao, sólo hace falta incluir una pequeña función en la cabecera de nuestro fichero index.php
La función, que lee las cabeceras del navegador para saber con qué dispositivo navega, se llama esMovil(), hay que insertar esta función o la librería que la contiene en la primera línea de nuestro script index.php
function esMovil(){
return eregi( 'ipod|iphone|ipad|android|opera mini|blackberry|palm os|windows ce|Bada|Windows Phone|Symbian', $_SERVER['HTTP_USER_AGENT'] );
}
Esta función es capaz de detectar si el navegador del visitante pertenece a un dispositivo móvil, ahora simplemente tenemos que añadir un condicional al principio de nuestro fichero index.php para filtrar a los visitantes según el dispositivo que utilizan:
if( esMovil() AND $_SERVER['REQUEST_URI']=='/'){
header( 'location:/versionmovil/' );
exit();
}
Es importante recordar que esta verificación hay que hacerla al comienzo del script, la función header location de PHP no funcionará si ya hemos mostrado algo de código HTML. Recomiendo incluir la función en la primera línea y esta verificación justo a continuación. En caso de que estén utilizando un dispositivo móvil, los redireccionará a: http://www.midominio.com/versionmovil
Este script, detecta los navegadores por defecto de los siguientes dispositivos móviles (probado a 05/10/2010):
- iPod
- iPhone
- iPad
- Android
- Blackberry
- Palm OS
- Windows móvil
- Symbian
Además, es capaz de detectar si el dispositivo está navegando con la versión para móviles de Opera, Opera Mini.
Agradezco a @davidru85 su tweet por ayudarme a mejorar la función.
Agradezco a @davidru85 su tweet por ayudarme a mejorar la función.
¿Windows CD o Windows CE? ;)
ResponderEliminarGracias David! Windows CE, me había colado.
ResponderEliminarBuenas, estupenda función que he usado! Aqui os dejo más identificadores de plataformas móviles para hacerla más completa:
ResponderEliminarandroid|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino
Saludos.
@Javier gracias por completar la función
ResponderEliminarEs posible usar esto en un blog de Blogger? es que recibo muchas quejas de que mi blog se ve mal en los móviles y quiero hacer una versión móvil, el problema es que no sé usar lo del post :\ si acaso se puede... ¿Alguien puede darme una pista de cómo hacerlo?
ResponderEliminaralguien puede escribir el texto completo que tendría que escribir en index.php? Por favor, no tengo ni idea...
ResponderEliminarGracias, simple y directo, me encanta.
ResponderEliminarHola:
ResponderEliminarintersante articulo, muchas gracias por publicarlo, hace tiempo hicimos algo similar, pero ahora, nos surge otra situación:
¿que pasa si ahora, estando en la versión movil, requerimos darle al visitante la posibilidad de elegir "ver la versión completa"?
con este script, -y estando dentro de cms- indudablemente la petición pasaria por el index y seria nuevamente redireccionado a la versión movil.
¿como podriamos evitar que la "segunda vez" que entre al sitio, pasara por este script?
el punto es: que la primera vez, si entra por un movil, el sitio lo redireccione automaticamente, pero despues, si el elige la versión completa, pueda verla.
esto desde un cms (joomla) en el que todas las peticiones pasan por el index.php
Gracias y esperamos alguna idea al respecto.
Hola Alfredo, bastaría con añadir una variable movil a la url y agregar esta condición a la primera línea.
ResponderEliminarif( esMovil() AND $_SERVER['REQUEST_URI']=='/' AND $_GET["movil"]=='si')
Para evitar que haga esta redirección tendríamos que añadir la variable no al comienzo del script, este dato lo sacaríamos de la base de datos de preferencias del usuario.
Bueno hay les va un tip:
ResponderEliminarLa funcion ereg() y eregi() ha sido suprimida de las versiones de PHP...
Por eso me está tirando el error eregi() is deprecated ...
Existe alguna otra función que se pueda utilizar al respecto ???
Me parece que por lo que he investigado si les marca el error eregi() is deprecated...
ResponderEliminarBasta con migrar la funcion a
preg_match
Ahora el asunto es que va todo bien... pero la página no me redirecciona....
Que podrá ser ? no funciona el script ???
a mi no me marcó ningún error, y me funciona bastante bien, muchas gracias. :)
ResponderEliminarFunciona pertectamente utilizando la funcion
ResponderEliminary declarando en una variable los dispositivos moviles.
return preg_match($variable, $_SERVER['HTTP_USER_AGENT']);
viejo... me podria dar una mano con eso de la funcion y la variable.... dejo mi correo.. uruvenz78@hotmail.com
EliminarHola a Todos. Que pasa si el index es html y no php?????Gracias
ResponderEliminarchequeaq esto ...
Eliminarhttp://vitaminaweb.com/redireccion-301-automatica-a-versiones-web-moviles-para-iphone-blackberry-o-palm_357
no funcionaria,xq estas leiendo los valores que ha detectado el servidor por eso usas php, pero lo podrias hacer en html pero con JAVASCRIPT :D
ResponderEliminarExcelente! muy buen aporte!
ResponderEliminarno me funciona. pon el codigo entero por favor, con etiquetas
ResponderEliminarHola amgigo una pregunta, tengo una radio online, y quisiera que aparezca en el movil, osea de aparecer aparece, pero no repoduce el sonido como en un navegador normal de pc, usando el opera mini tampoco, entonces que puedo hacer, porfavor ayuda! :D
ResponderEliminarlos smartphone no tienen la capacidad de reproducir el sonido de las paginas web, un ejemplo, youtube, cuando quieres ver un video se plasma un reproductor en tu celular ya que directo no se puede, ahora para que se escuche tu rario en los smartphone, lo que nosotros hacemos (http://blackradio.com.mx) es tener una cuenta e TuneIn, es una aplicacion que se encuentra disponible en todos los sistemas operativos de moviles, si necesitas ayuda me puedes contactar en esa pagina.
EliminarBueno agradezco el aporte que nos a brindado David, esto me va ha servir de mucho.
ResponderEliminarPara aquellos que tengan problemas con la funcion ereg() de PHP los invito a que visiten el sitio oficial de PHP al parecer a quedado en versiones anteriores de php 5.0, se esta utilizando preg_match();
hola, me funciona perfectamente, el unico problema que me da es que no me diferencia entre tablets y moviles android
ResponderEliminarQue codigo pondría si le quiere ofrecer al usuario la opciòn de regresar a la versión clásica. Salidos y Gracias.
ResponderEliminar