Si tienes un sitio web y estás pensando en crear un diseño para que se visualize correctamente en dispositovos móviles, probablemente necesitaras redireccionar automáticamente a los navegadores de los dispositivos móviles para que entren directamente a la versión diseñada específicamente para estos, y que los navegadores de las pc's de escritorio entren a tu sitio normal.
Podemos hacerlo de la siguiente manera, creamos un archivo llamado index.php, el archivo que tenias como index lo puedes renombrar (por ejemplo a escritorio.html o la extensión que tenía).
En el archivo index.php introducimos el siguiente código, aún no lo pruebo con todos los dispositivos, pero con esto debería detectar y redireccionar a cualquier dispositivo móvil, incluso los más nuevos como el iphone, ipod, el motorola droid, los blackberry storm y otros:
<?
$useragent=$_SERVER['HTTP_USER_AGENT'];
$mobile_browser = '0';
if(preg_match('/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile|o2|opera mini|palm( os)?|plucker|pocket|pre\/|psp|smartphone|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce; (iemobile|ppc)|xiino|iIEMobile|Windows CE|NetFront|PlayStation|PLAYSTATION|like Mac OS X|MIDP|UP\.Browser|Symbian|Nintendo|Android/',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))){
$mobile_browser++;
}
if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
$mobile_browser++;
}
if(preg_match("/Android/i",$_SERVER["HTTP_ACCEPT"])){
$mobile_browser++;
}
if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
$mobile_browser++;
}
$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
$mobile_agents = array(
'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
'blaz','brew','cell','cldc','cmd-','dang','deviceBB','doco','eric',
'hipt','inno','ipaq','ipod','iphon','java','jigs','kddi','keji','leno',
'lg-c','lg-d','lg-g','lge-','maui','maxo','midp','mits','mmef','mobi',
'mot-','moto','mwbp','nec-','newt','noki','oper','palm','pana','pant',
'phil','play','port','prox','qwap','sage','sams','sany','sch-','sec-',
'send','seri','sgh-','shar','sie-','siem','smal','smar','sony','sph-',
'symb','t-mo','teli','tim-','tosh','tsm-','upg1','upsi','vk-v','voda',
'wap-','wapa','wapi','wapp','wapr','webc','webOS','winw','winw','xda',
'xda-');
if(in_array($mobile_ua,$mobile_agents)) {
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['ALL_HTTP']),'operamini')>0) {
$mobile_browser++;
}
if(isset($_SERVER["HTTP_X_SKYFIRE_PHONE"])){
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['ALL_HTTP']),'iphone')>0) {
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['ALL_HTTP']),'ipod')>0) {
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),' ppc;')>0) {
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows ce')>0) {
$mobile_browser++;
}
else if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows')>0) {
$mobile_browser=0;
}
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'iemobile')>0) {
$mobile_browser++;
}
$dm_usergent = array(
'PIE4' => 'compatible; MSIE 4.01; Windows CE; PPC; 240x320',
'PIE4_Smartphone' => 'compatible; MSIE 4.01; Windows CE; Smartphone;',
'PIE6' => 'compatible; MSIE 6.0; Windows CE;',
'Minimo' => 'Minimo',
'OperaMini' => 'Opera Mini',
'AvantGo' => 'AvantGo',
'Plucker' => 'Plucker',
'NetFront' => 'NetFront',
'SonyEricsson' => 'SonyEricsson',
'Nokia' => 'Nokia',
'Motorola' => 'mot-',
'BlackBerry' => 'BlackBerry',
'WindowsMobile' => 'Windows CE',
'PPC' => 'PPC',
'PDA' => 'PDA',
'Smartphone' => 'Smartphone',
'Palm' => 'Palm'
);
function obtenerNavegador($useragents, $useragent){
foreach($useragents as $nav=>$ua){
if(strstr($useragent, $ua)!=false){
return $nav;
}
}
return 'Desconocido';
}
$navegador= obtenerNavegador($dm_usergent,$_SERVER['HTTP_USER_AGENT']);
if($navegador!='Desconocido'){
header('Location:Aquí va la URL de tu web normal');
}
else{
header('Location:Aquí va la URL de tu web normal');
}
if($mobile_browser>0) {
header('Location:Aquí va la URL de tu web móvil');
}
else{
header('Location:Aquí va la URL de tu web normal');
}
?>
25 Comentarios a Detectar dispositivos moviles y redireccionar PHP
No lo puedo copiar!!
tienes razón, acabo de agregar el archivo descargable, de hecho voy a colocar los archivos originales con el código para que se puedan descargar en este tipo de post XD
muchas gracias Hermano...
sam
bajando!
Sam
No funcionA
Me funciona a las mil maravillas. Muchas gracias!!
tremendo codigo, solo modificas add tu web y la movil y fuas arranca que pritty gracias.
Excelente...
Em..... lo veo innecesariamente complejo... qué tal si comprobáis la dimensión de su pantalla con JS? algo así:
<,script type="text/javascript",>
if(screen.width < 100){
location.replace('wap.misitio.com')
}
<,/script ,>
(quitar comas, claro)
Hola, Muchas Gracias por los script de validación estan manejables.
Aca te envío una validación que no tomaste en cuenta y es si el navegador es Opera para Macintosh me dice que es Móvil por que sus primeras 4 letras son 'oper' y no consigue la palabra 'windows' en la siguiente validación
"else if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows') > 0) "; le agregue la de Macintosh allí mismo.
Hey necesito ayuda! No corre! :S Me sale el siguiente error: Parse error: syntax error, unexpected ';' in /home/thefish/public_html/index.php on line 19.. Podrian postear un ejemplo?
Saludos, No me Funciona en IE8
de donde puedo bajar el archivo?
holaaa de donde lo puedo descagar!?
hola tengo un problema, utileice el codigo y me tira este error
Parse error: syntax error, unexpected ';' in /home/vamos/public_html/indexm.php on line 16
sabes como podria solucionarlo?
gracias
no puedo ver la pgina en el iphone 4 no sabes porque ,,, en los demas telefonos funciona perfectamente
kreeeesss k no se puede copiar wey no seas pendejo engañalos a los que no saben. consiganse el firebug y inspeccionen el elemento del contenedor del codigo y ya listo ahi lo copian. ok saludos.
sino lo pueden copiar.... solo seleccionen y arrastra en un block de notas o word pad y listo... si funcio al 100... thanks....
el autor del codigo ha dicho que no se reprodusca el codigo en otras paginas, para que no sea código desactualizado el que usen, el autor está actualizando cada vez que sale un movil nuevo con diferentes caracteristicas. asi que lo que hace el que posteo este codigo hace bien en que no se pueda copiar, pero debió poner la url del autor donde pueden encontrar el codigo, ahí les va https://trac.agron.iastate.edu/trac/IEM/browser/iemwebsite/include/mobile_device_detect.php?rev=6362
Hola alguien me puede sacar de una duda , aunque para vosotros sea una tontería.
Se paga aparte la versión movil de una web al servicio de hospedaje? Vamos que si te cobran por tu subir la versión movil.
una consulta, y si por ejemplo quiero diferenciar entre dispositivos moviles? osea tengo un sitio para blackberry, uno para ipad y uno para PC. MUCHAS GRACIAS!!
Gracias funciona de huevos...
Recomiendo esta librería que se actualiza frecuentemente:
http://code.google.com/p/php-mobile-detect/
parece bueno
Tal vez la pregunta sea un poco tonta, se tiene que colocar el codigo al que ira en la version movil? O la version de escritorio?
Gracias.
Publicar un comentario