vista para modo internet hack hacer gratis documento descargar con compatible compatibilidad como caracteristicas php browser

php - para - modo documento internet explorer 11



PHP: si Internet Explorer 6, 7, 8 o 9 (17)

Quiero hacer un condicional en PHP para las diferentes versiones de Internet Explorer a lo largo de las líneas de:

if($browser == ie6){ //do this} elseif($browser == ie7) { //dothis } elseif...

He visto muchas variaciones en código similar, pero buscando algo súper simple es muy fácil codificar para hacer algo simple y hacer cosas diferentes.

Gracias

EDITAR: Necesito esto para mostrar algunos mensajes diferentes a los usuarios, por lo que CSS condicionales, etc. no son buenos.


''HTTP_USER_AGENT'' Contenido del encabezado User-Agent: de la solicitud actual, si hay uno. Esta es una cadena que denota el agente de usuario que está accediendo a la página. Un ejemplo típico es: Mozilla / 4.5 [en] (X11; U; Linux 2.2.9 i586). Entre otras cosas, puede usar este valor con get_browser () para adaptar la salida de su página a las capacidades del agente de usuario.

Así que supongo que podrá obtener el nombre / id del navegador de la variable $ _SERVER ["HTTP_USER_AGENT"].


Aquí hay un gran recurso para detectar navegadores en php: http://php.net/manual/en/function.get-browser.php

Este es uno de los ejemplos que parece el más simple:

<?php function get_user_browser() { $u_agent = $_SERVER[''HTTP_USER_AGENT'']; $ub = ''''; if(preg_match(''/MSIE/i'',$u_agent)) { $ub = "ie"; } elseif(preg_match(''/Firefox/i'',$u_agent)) { $ub = "firefox"; } elseif(preg_match(''/Safari/i'',$u_agent)) { $ub = "safari"; } elseif(preg_match(''/Chrome/i'',$u_agent)) { $ub = "chrome"; } elseif(preg_match(''/Flock/i'',$u_agent)) { $ub = "flock"; } elseif(preg_match(''/Opera/i'',$u_agent)) { $ub = "opera"; } return $ub; } ?>

Luego, más adelante en tu código, podrías decir algo como

$browser = get_user_browser(); if($browser == "ie"){ //do stuff }


Aquí hay una pequeña función php que escribí que usa la expresión regular directamente del código de snipting javascript sugerido por MSFT de este artículo: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx

/** * Returns the version of Internet Explorer or false */ function isIE(){ $isIE = preg_match("/MSIE ([0-9]{1,}[/.0-9]{0,})/",$_SERVER[''HTTP_USER_AGENT''],$version); if($isIE){ return $version[1]; } return $isIE; }


Esto es a lo que terminé usando una variación de, que busca IE8 y abajo:

if (preg_match(''/MSIE/s(?P<v>/d+)/i'', @$_SERVER[''HTTP_USER_AGENT''], $B) && $B[''v''] <= 8) { // Browsers IE 8 and below } else { // All other browsers }


La comprobación de MSIE solo no es suficiente para detectar IE. También necesita "Trident", que solo se usa en IE11. Así que aquí está mi solución que funcionó las versiones 8 a 11.

$agent=strtoupper($_SERVER[''HTTP_USER_AGENT'']); $isIE=(strpos($agent,''MSIE'')!==false || strpos($agent,''TRIDENT'')!==false);


Observe el caso en ''Trident'':

if (isset($_SERVER[''HTTP_USER_AGENT'']) && ((strpos($_SERVER[''HTTP_USER_AGENT''], ''MSIE'') !== false) || strpos($_SERVER[''HTTP_USER_AGENT''], ''Trident'') !== false)) { // IE is here :-( }


PHP tiene una función llamada get_browser() que devolverá un objeto (o matriz si así lo desea) con detalles sobre el navegador de los usuarios y lo que puede hacer.

Una simple mirada me dio este código:

$browser = get_browser( null, true ); if( $browser[''name''] == "Firefox" ) if( $browser[''majorversion''] == 4 ) echo "You''re using Firefox version 4!";

Esta no es una manera segura (como se lee en HTTP_USER_AGENT , que puede ser falso, y algunas veces será analizado incorrectamente por php), pero es el más fácil que puedes encontrar hasta donde yo sé.



Puede usar algo como esto para diferentes mensajes o div / css

<!--[if IE 6]> <style type="text/css"> div.ie6 { display:block; } </style> <![endif]--> <!--[if IE 7]> <style type="text/css"> div.ie7 { display:block; } </style> <![endif]--> <!--[if IE 8]> <style type="text/css"> div.ie8 { display:block; } </style> <![endif]--> <!--[if IE 9]> message1 <![endif]--> <!--[if !IE 6]> message2 <![endif]--> <!--[if lt IE 8]> message3 <![endif]-->

O use diferentes div de css

<!--[if lte IE 8]> <style type="text/css"> div.lteie8 { display:block; } </style> <![endif]--> <!--[if gt IE 6]> <style type="text/css"> div.gtie6 { display:block; } </style> <![endif]--> <!--[if gte IE 6]> <style type="text/css"> div.gteie6 { display:block; } </style> <![endif]-->


Puede verificar la variable de servidor HTTP_USER_AGENT. El agente de usuario transferido por IE contiene MSIE

if(strpos($_SERVER[''HTTP_USER_AGENT''], ''MSIE'') !== false) { ... }

Para versiones específicas, puede extender su condición

if(strpos($_SERVER[''HTTP_USER_AGENT''], ''MSIE 6.'') !== false) { ... }

También vea esta pregunta relacionada .



Un enfoque basado en tridend sería mejor. Aquí hay una función rápida para verificar IE 8.

<?php function is_IE8(){ if(strpos(str_replace('' '', '''', $_SERVER[''HTTP_USER_AGENT'']),''Trident/4.0'')!== FALSE){ return TRUE; }; return FALSE; } ?>


Una versión que continuará trabajando con IE10 e IE11:

preg_match(''/MSIE (.*?);/'', $_SERVER[''HTTP_USER_AGENT''], $matches); if(count($matches)<2){ preg_match(''/Trident///d{1,2}./d{1,2}; rv:([0-9]*)/'', $_SERVER[''HTTP_USER_AGENT''], $matches); } if (count($matches)>1){ //Then we''re using IE $version = $matches[1]; switch(true){ case ($version<=8): //IE 8 or under! break; case ($version==9 || $version==10): //IE9 & IE10! break; case ($version==11): //Version 11! break; default: //You get the idea } }


hago esto

$u = $_SERVER[''HTTP_USER_AGENT'']; $isIE7 = (bool)preg_match(''/msie 7./i'', $u ); $isIE8 = (bool)preg_match(''/msie 8./i'', $u ); $isIE9 = (bool)preg_match(''/msie 9./i'', $u ); $isIE10 = (bool)preg_match(''/msie 10./i'', $u ); if ($isIE9) { //do ie9 stuff }


pero sigue siendo útil, ¡y funciona con IE11! Aquí hay otra manera de obtener los navegadores comunes devueltos para la clase css:

function get_browser() { $browser = ''''; $ua = strtolower($_SERVER[''HTTP_USER_AGENT'']); if (preg_match(''~(?:msie ?|trident.+?; ?rv: ?)(/d+)~'', $ua, $matches)) $browser = ''ie ie''.$matches[1]; elseif (preg_match(''~(safari|chrome|firefox)~'', $ua, $matches)) $browser = $matches[1]; return $browser; }

Entonces esta función retorna: ''safari'' o ''firefox'' o ''chrome'', o ''ie ie8'', ''ie ie9'', ''ie ie10'', ''ie ie11''.

Espero eso ayude


si tiene Internet Explorer 11 y se ejecuta en una PC con pantalla táctil, debe usar: preg_match (''/ Trident / 7.0; Touch; rv: 11.0 /'', $ _SERVER [''HTTP_USER_AGENT'']) en lugar de: preg_match (''/ Trident / 7.0; rv: 11.0 / '', $ _SERVER ['' HTTP_USER_AGENT ''])


if (isset($_SERVER[''HTTP_USER_AGENT'']) && preg_match("/(?i)msie|trident|edge/",$_SERVER[''HTTP_USER_AGENT''])) { // eh, IE found }