Detectar navegador en iPhone
5 seguidores
Hola, estoy dando mis primeros pasos para diseñar una web para iphone y me ha surgido el primer problema:
quiero que cuando detecte el navegador del iphone directamente me cargue una pagina diseñada especificamente para el iphone.
Lo estoy haciendo con el siguiente código:
<?php
if ((strpos($_SERVER['HTTP_USER_AGENT'], "iPod"))||(strpos($_SERVER['HTTP_USER_AGENT'], "iPhone"))) {
header('Location: http://www.kid-a.es/m.index.html');
}
?>
lo tengo incluido en el HEAD de la web de mi index.html pero no se si debería realizar un index.php ya que por lo que he leído por ahi no es necesario, basta con ponerlo en el html.
A ver si alguien me puede echar una mano, muchas gracias.
deeleman
La función strpos de PHP devuelve, en caso de existir, la posición de la cadena encontrada como valor numérico, no como valor booleano true, de modo que si encuentra la cadena, la función condicional no funcionará como deseas. Si no la encuentra, sí.
En lo relativo a la detección del iPhone, se suele emplear con acierto la revisión del user-agent, tal como haces, pero si quieres permanecer actualizado indefinidamente, te recomiendo que le eches un vistazo a esto: http://wurfl.sourceforge.net/
P.S: Wow... Mi primer post en DMSTK en 7 años.
joshuatree
Creo que el único problema del php que no te iba es que debes definir el tipo MIME determinado para que el intérprete de php lo lea dentro del html. Yo lo he hecho así para includes de un par de webs que hice y todo perfect.
No soy en absoluto un experto del tema, pero puedo consultarlo. O podemos esperar a que algún experto se pase por aquí y me corrija (o no)
kid_a
Eso es!! parece que con javascript si que funciona
Muchas gracias a los dos!!
abrandlincoln
javascript al rescate : poner antes del </body>
<script type="text/javascript" >
<!--
if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {
location.replace("http://url-to-send-them/iphone.html");
}
-->
</script>
kid_a
Vaya pues no es problema de que mi servidor no soporte PHP. Si alguien encuentra el fallo mil gracias.
kid_a
Nada, tampoco me funciona.
Voy a ponerme en contacto con los que me alojan el dominio no vaya a ser problema del php. Aunque en teoría me lo soporta.
Gracias de nuevo andrewman, si se te ocurre alguna cosa soy todo oidos.
andrewman
Prueba con esto:
<?php
$iSitio = "http://www.kid-a.es/m.index.html";
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'iPod') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone') !== false) {
header("Location: ".$iSitio);
}
?>
kid_a
Gracias por la respuesta Andrewman, pero sigue sin funcionarme de la manera que me comentas.
Por cierto en el código que me das a insertar las comillas del Location son dobles, mientrás que en el que había buscado son simples. He probado de las dos maneras y no me funciona. No se donde puede estar el fallo.
Lo de que me dejo muchos móviles fuera ya soy consciente, pero esto es más un reto personal para poder desarrollar una primera web en el iphone, gracias de todos modos por el comentario,
andrewman
Un par de comentarios. Sólo te servirá para esos dos dispositivos, estás dejando bastantes móviles fuera.
Lo otro, vi tu página y como comentas aquí, metiste el código dentro de los head tags, pero así no te funcionará porque ya se cargó la web, por ende tendrías que hacer un redirect.
Pero de la forma que lo pretendías hacer desde un principio y como normalmente se hace, es insertar el código antes del:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
Por lo tanto te quedaría algo así:
<?php ..........?> <----DEBES INSERTAR EL CODIGO AQUÍ
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Kid A : Graphic Designer</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="content-language" content="es">
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="Fri, Jan 01 1900 00:00:00 GMT" />
<meta http-equiv="Reply-to" content="Kid A <hola@kid-a.es>" />
........ el resto de tu html
Luego el código a insertar:
<?php
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'iPod') || strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone')) {
header("Location: http://www.kid-a.es/m.index.html") ;
}
?>
Puedes insertar código php dentro de un html sin ningún problema siempre y cuando no olvides poner los delimitadores <?php ... ?>