Garth

Jak detekovat prohlížeč pomocí PHP? část 1

Nejlépe se prohlížeč detekuje přez Javascript (například přes skript "modernizer"), ale v určitých případech se hodí detekovat prohlížeč pomocí PHP a dle něj si určit který PHP skript použijeme.

Příklad slouží k detekci "starších" a "novějších" prohlížečů. Kde výsledek jde do proměnné s názvem "$pom".
V níže uvdeném případu se jedná o to, zda daný prohlížeč podporuje všechny vlastnosti potřebné proto, aby fungoval "JQuery select box plugin".



'; // (FF) --- Mozilla/5.0 (Windows NT 6.0; rv:19.0) Gecko/20100101 Firefox/19.0 // (ie9) --- Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0) // (ie7) --- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C) //(chrome) --- Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22 //(opera 12.10) --- Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.10 //(safari) --- Mozilla/5.0 (Windows; U; Windows NT 6.0; cs-CZ) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1 foreach($browser as $parent) { $s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent); //pozice kde zacina retezec s nazvem browseru $f = $s + strlen($parent); //s = pozice zacatku nazvu prohlizece ; strlen = delka nazvu prohlizece z meno pole $version = substr($_SERVER['HTTP_USER_AGENT'], $f, 5); //5 = 5 znaku vcetne mezery za retezcem nazvu prohlizece //Pr.: 5 = firefox 19.0 ; 4 = firefox 19. ; 3 = firefox 19 ; 2 = firefox 1 $version = preg_replace('/[^0-9,.]/','',$version); if(strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent)) { $info[browser] = strtolower($parent); $info[version] = $version; } } $prehliadac = "$info[browser] $info[version]"; echo $prehliadac; //dolu test prohlizecu, kde nefunguje JQuery select box plugin //support: Firefox 3.6+, Chrome 9+, IE 8+, Safari 5+, Opera 10+ echo '

'; if ($info[browser] == 'msie'){ //IE if( $info[version] < '8.0' ){ $pom = 1; //je to starsi prohlizec } else{ $pom = 0; //ok } echo 'IE: '.$pom.'

'; } else if ($info[browser] == 'presto'){ //Opera $verze = preg_split("/./", $info[version]); /* for($i=0;$i<10;$i++){ echo 'verze_'.$i.': '.$verze[$i].'
'; }*/ //2.12 ok ; 2.3 nepovolit ; 2.4+ ok if( $verze[1] < 4 ){ //4 = verze 2.4, 12 = verze 2.12 $pom = 1; //je to strasi prohlizec } else{ $pom = 0; //ok } echo 'Opera (jadro Presto): '.$pom.'

'; } else if ($info[browser] == 'firefox'){ //FF $verze = preg_split("/./", $info[version]); if( $verze[0] < 4 ){ //3.6+ podporuje ; 4 = verze 4.0 a starší $pom = 1; //je to strasi prohlizec } else{ $pom = 0; //ok } echo 'FF: '.$pom.'

'; } else if ($info[browser] == 'chrome'){ //Chrome $verze = preg_split("/./", $info[version]); if( $verze[0] < 9 ){ //9+ podporuje $pom = 1; //je to strasi prohlizec } else{ $pom = 0; //ok } echo 'Chrome: '.$pom.'

'; } else if ($info[browser] == 'safari'){ //Safari $verze = preg_split("/./", $info[version]); if( $verze[0] < 533 ){ //5+ podporuje (533.16 a 533.17.8 jsou i v Safari 4 v poslednĂ­ch vezich!) dle webkitu ne dle verze Safari prez verze by se to muselo prepsat $pom = 1; //je to strasi prohlizec } else{ $pom = 0; //ok } echo 'Safari: '.$pom.'

'; } ?>

Tento soubor je i v souboru ke stažení níže.

Soubory ke stažení

zdrojovy_kod

zdrojovy_kod

 

 


<< zpět




Nejnovější články

Jak udělat stín bloku pouze na jedné straně?

CSS - Úvod do CSS

Jak detekovat klik na tlačítka myšy?

JavaScript - Úvod do JavaScriptu

Jak udělat odkaz na celý řádek tabulky?

JavaScript - Příklady v JavaScriptu

Jak zrušit tečky kolem odkazu?

CSS - Základy CSS

Jak fungují lomítka a tečky v url adrese?

(x) HTML - Úvod do HTML