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.

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

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]<?php
echo $_SERVER[‘HTTP_USER_AGENT’] . "\n";
print_r (get_browser( null, true ));
?>[/php]

Az eredmény így néz ki:

[plain]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
)[/plain]