2008-10-09 8 views
7

Mobile Safari es un navegador muy capaz, y puede manejar mi sitio web como es perfectamente. Sin embargo, hay algunos elementos en mi página que podrían optimizarse para navegar usando este dispositivo; como servir miniaturas específicas que son más pequeñas que las contrapartes de escritorio para ayudar a incluir más contenido en la pantalla.¿Cómo puedo detectar el lado del servidor Mobile Safari usando PHP?

Me gustaría saber cómo puedo detectar Mobile Safari (todas las versiones, preferiblemente) usando PHP, entonces puedo servir a) un archivo CSS específico yb) miniaturas de imágenes de diferentes tamaños.

Respuesta

4

comparar la cadena de agente de usuario con la de un Safari Mobile utiliza:

Safari Mobile User Agent String

+2

Este enlace ya no parece ir al lugar correcto. – Nosredna

+0

Parece que su enlace ya no es válido. Simplemente redirecciona a la página principal de safari para desarrolladores. – matdumsa

+1

Este es un enlace actualizado a la información: http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html –

3
$_SERVER['HTTP_USER_AGENT'] 

Eso le dará la cadena de agente de usuario que se puede comparar con el safari móvil.

p.s. http://wurfl.sourceforge.net/ WURFL puede ayudarlo a determinar qué UA desea.

+0

DeviceAtlas es otra alternativa a WURFL –

7

Gracias Joe, he leído esa página y encontró el WebKit detection library (en JavaScript). Cambié el código para satisfacer mis necesidades.

Para cualquiera que esté interesado, aquí está mi solución.

<?php 

/* detect Mobile Safari */ 

$browserAsString = $_SERVER['HTTP_USER_AGENT']; 

if (strstr($browserAsString, " AppleWebKit/") && strstr($browserAsString, " Mobile/")) 
{ 
    $browserIsMobileSafari = true; 
} 

?> 
+0

Pero, ¿y si JavaScript está desactivado? –

+1

@Matt - La detección se realiza en el servidor, no leyó mi publicación correctamente - Cambié el código para adaptarlo a mis necesidades, como para encontrar las cadenas "AppleWebKit /" y "Móvil /". – different

0

Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, como Gecko) de la versión/1,0 Safari/525.27.1 Pre/1.0 que es el navegador para la palma Pre, y la palabra 'Móvil' no está allí.

Estoy trabajando para que mi detección funcione completamente con todos los navegadores con capacidad más reciente. Después de mirar mytouch, G1, Palm Pre, droid y otros, (pero no todos) ahora estoy seguro de que esto es factible para todos los teléfonos nuevos:

if (preg_match ("/ applewebkit/i", $ _SERVER [ 'HTTP_USER_AGENT']) & & preg_match ("/ (móvil | pre)/i", $ _SERVER ['HTTP_USER_AGENT'])) encabezado ("Ubicación: http://simplefoodie.com/iphone/?carryover=" .urlencode ($ _ SERVER [REQUEST_URI]));

0
<?php 

// detect Safari only! 

$string = $_SERVER['HTTP_USER_AGENT']; 

if (strstr($string, " AppleWebKit/") && strstr($string, " Safari/") && !strstr($string, " CriOS")) 
    { 
     echo 'See in Safari only'; 
    } 

?> 
Cuestiones relacionadas