Ciao a tutti.
Volevo informarvi di un piccolo problema che si potrebbe presentare a coloro che avessero necessità di fare un controllo tramite $_SERVER['HTTP_USER_AGENT'] ed incappasero nel nuovo internet explorer 8.
Sul mio sito avevo deciso di fare un piccolo "warning" destinato agli utilizzatori del famigerato IE6 per chiedere loro di considerere un upgrade ad una versione più recente.
Mi è piaciuto quello di google: http://code.google.com/p/ie6-upgrade-warning/
l'ho quindi montato in un semplicissimo javascript che appariva se il controllo qui sotto dava buon esito:
Codice PHP:
if(ereg("MSIE (5.5|6)", $_SERVER['HTTP_USER_AGENT']))
{// mostra il warning
}
Funzionava perfettamente, sino a quando su una macchina non ho fatto l'upgrade da IE7 a IE8 e provando a caricare la pagina mi apriva il warning
La colpa è della versione 8 di IE, che a seconda della macchina su cui si trova può generare stringhe di User Agent particolarmente antipatiche:
Mozilla/4.0 (compatible;
MSIE 8.0; Windows NT 6.1; Trident/4.0; Mozilla/4.0 (compatible;
MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.1.4322)
che ovviamente vedendo in mezzo a tutto anche "MSIE 6.0" fanno scattare il meccanismo
Ho risolto con questo doppio controllo, ossia:
verifica che sia presente "MSIE 6" e se contemporaneamente NON trova alcuna stringa tra MSIE e MSIE 6 (cioè non è presente due volte il termine "MSIE"), allora vuol dire che non siamo di fronte ad uno user agent IE8, ma piuttosto ad un browser IE6!
Codice PHP:
if(ereg("MSIE (5.5|6)", $_SERVER['HTTP_USER_AGENT']) && !ereg("MSIE.*MSIE 6", $_SERVER['HTTP_USER_AGENT']))
{// mostra il warning
}
Spero che vi possa essere di aiuto.
Stefano