PHP böngésző azonosítás (browscap.ini)

Nem mindenki használja ugyanazt a böngészőt, és nem minden böngésző viselkedik egyformán. Ezért fontos, hogy olyan oldalakat tudjunk létrehozni, melyek mentesek a böngésző-specifikus tervezési hibáktól, megőrzik konzisztenciájukat az összes böngészőben vagy a látogatók képességeinek megfelelően legyenek specializálva.

A PHP tartalmazza a get_browser() függvényt, amely megpróbálja meghatározni a felhasználó böngészőjének képességeit, a böngésző információnak felkutatásával a browscap.ini fájlban. A keresés a User Agent alapján történik, amelyhez a függvény alapértelmezésben a HTTP User-Agent fejlécet használja. A keresés eredményét vagy objektumként, vagy tömbként adja vissza. Az eredmény többek között tartalmazza a böngésző típusát, fő- és alverzióját, JavaScript, frames és cookies képességeit.

Azonban mindezek működéséhez feltétlenül szükség van arra, hogy a php.ini fájlban szerepeljen a browscap konfigurációs beállítás, amelynek a browscap.ini fájl pontos helyére kell mutatnia a rendszerén.

[browscap]
browscap = /usr/local/etc/php/extras/browscap.ini

A browscap.ini fájlt nem tartalmazza a PHP, de itt találhat egy naprakész php_browscap.ini fájlt.

Példa a használatra

A következő példával ellenőrizhető a get_browser() függvény helyes működése:

<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n";
print_r (get_browser( null, true ));
?>

Az eredmény így néz ki:

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0</pre>
Array
 (
 [browser_name_regex] => ^mozilla/5\.0 (.*windows nt 6\.1.*wow64.*rv:.*) gecko/.* firefox/8\..*$
 [browser_name_pattern] => Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/8.*
 [parent] => Firefox 8.0
 [platform] => Win7
 [win32] =>
 [win64] => 1
 [browser] => Firefox
 [version] => 8.0
 [majorver] => 8
 [frames] => 1
 [iframes] => 1
 [tables] => 1
 [cookies] => 1
 [javasscript] => 1
 [javaapplets] => 1
 [cssversion] => 3
 [minorver] => 0
 [alpha] =>
 [beta] =>
 [win16] =>
 [backgroundsounds] =>
 [vbscript] =>
 [activexcontrols] =>
 [isbanned] =>
 [ismobiledevice] =>
 [issyndicationreader] =>
 [crawler] =>
 [aolversion] => 0
 )