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:
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 warningCodice PHP:if(ereg("MSIE (5.5|6)", $_SERVER['HTTP_USER_AGENT']))
{// mostra 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:
che ovviamente vedendo in mezzo a tutto anche "MSIE 6.0" fanno scattare il meccanismoMozilla/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)
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!
Spero che vi possa essere di aiuto.Codice PHP:if(ereg("MSIE (5.5|6)", $_SERVER['HTTP_USER_AGENT']) && !ereg("MSIE.*MSIE 6", $_SERVER['HTTP_USER_AGENT']))
{// mostra il warning
}
![]()
Stefano

Rispondi quotando

