PHP, JS y los navegadores para móviles
Recientemente he desarrollado la versión para móviles de mi web y me he dado cuenta de una cosa.
Realizo una comprobación en php al principio de mi página para saber si esta viéndolo un iphone, un ipad, un móvil android, etc.. en cuyo caso redirecciono a la versión para móviles...
Todo eso está muy bien...pero que pasa cuando el navegador en cuestión por no ejecutar, no ejecuta ni el php, a veces ni el javascript y, para gran asombro mío, hay algunos que no llegan ni al css 2.1....
En ese caso qué se supone que debemos hacer....con tablas y listo!! porque ya me dirán!! a día de hoy los navegadores para los móviles deberían dar unos servicios mínimos...independientemente de lo rápida que pueda ser la conexión contratada.
Propongo a los usuarios que se hayan encontrado en una situación parecida expongan su experiencia con los navegadores....
Yo personalmente usé para Android con la conexión de internet de Yoigo:
- [*]Navegador por defecto: lo mejor hasta ahora
- [*]Opera Mini: no acepta el php ni el css3
- [*]Opera Mobile: no acepta el php
- [*]Dolphin HD: lento pero bien en todo
- [*]Skyfire: ....HORRIBLE...no coge practicamente nada!!!
lfpacheco
Efectivamente...llevabas razón. Sobre todo con la segunda línea es cuando "hacen caso" los navegadores que fallaban.
Aun así he probado a hacerlo por php y por htaccess y me quedo con el último...se carga más rápida la web.
Muchas gracias guillermo!
guitobon
No falla el php.
La funcion header genera una cabecera http de redirección. Y al parecer esos navegadores no la "soportan" o bien lo les gusta.
Prueba a meter este par de lineas antes de la redirección:
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Fecha en el pasado
Hay veces que las caches no0 juegan malas pasadas.
Por otro lado cambia las comillas simples por comillas dobles (ya se que parece una chorrada esto).
Ya nos dices algo
lfpacheco
Si, yo también pensaba lo mismo con el php, pero entonces como es que usando este código en php:
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
// android
if ((stripos($ua,'android') !== false) && stripos($ua,'mobile') !== false) {
header('Location: http://mobile.miweb.com/');
exit();
}
// iphone/ipod
if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod'))
{
header('Location: http://mobile.miweb.com/');
exit();
}
//cualquier otro móvil
if (stripos($ua,'mobile') !== false) {
header('Location: http://mobile.miweb.com/');
exit();
}
...funcione con algunos navegadores si y con otros no.... entonces el problema no está en el código, sino en el navegador!!
Y lo mismo pasa con los css!!
También pensé si el problema podría darlo mi móvil, un Galaxy S, asique lo he probado en un HTC Jade, un Nokia Xpress Music y un Iphone 4....y en todos pasa lo mismo con los mismos navegadores.
Huelga decir que en los navegadores en los que va bien todo funciona y que si se ve en un pc de escritorio también se ve correctamente.
También fuí tirando trazas y viendo el log del php ante posibles errores pero no detectaba ninguno.
Respecto a cargarlo por javascript Santi lo había pensado pero quería quitar peso a la carga de la web. Ahora estoy estudiando hacerlo directamente por el servidor mediante mod_rewrite con el .htaccess
webfordesigners
Hola Pach,
en realidad no es que no ejecute el PHP, ningun navegador lo hace. Lo que sucede (o parece suceder) es que al hacer la petición de la página al servidor no le envía las cabeceras HTTP correctamente con su nombre-version de navegador. (Por lo que vi de tu otro post).
Has probado de mostrar en un log las cabeceras a ver que le llega exactamente? Igual no es exacto a lo que estás comparando o hay algun errorcillo en el código.
Has probado de insertar un css u otro dependiendo del navegador pero detectado por javascript?
http://api.jquery.com/jQuery.browser/
Igual te funciona mejor que con las cabeceras HTTP. Yo usaría más el Javascript para meter CSS diferentes dependiendo del navegador. A nivel de aplicación no tiene tanto sentido. (A mi modo de ver)
Santi
guitobon
Yo tampco me creo lo del PHP.
Se ejecuta por parte del server. El navegador ni siquiera es consciente de que hay PHP.
Por otro lado, dudo mucho que un navegador no soporte CSS 2.1, siempre y cuando el CSS sea válido según el W3C
Osefooo
Hola Pach,
no entiendo cuando dices que el navegador "no te acepta php". El código PHP se ejecuta en el servidor independientemente de qué navegador o dispositivo estes usando para ver la web.
Un saludo.
Ochefooo.