Informace o tom, jaký používá návštěvník stránek prohlížeč, jaké schopnosti tento prohlížeč má nebo zda se nejedná o robota je důležitá jak pro měření návštěvnosti, tak i pro správnou optimalizaci stránek pro daného návštěvníka. Rozpoznáme třeba, zda přichází z mobilního zařízení a můžeme mu automaticky nabídnout stránku optimalizovanou pro malé displeje.
V PHP tuto informaci o uživatelově prohlížeči zjistíme pomocí funkce get_browser(). Pro správnou funkci musíme mít v našem konfiguračním souboru pro php direktivu browscap, která musí ukazovat na platné umístění browscap.ini souboru.
Aktuální browscap.ini pro různé operační systémy a webové servery se dá ručně stáhnout ze stránek
http://browsers.garykeith.com/downloads.asp
Aktualizace 4.12.2012
Projekt Browser Capabilities byl ukončen. Stáhnout soubory browscap.ini můžete na dočasném úložišti.
http://tempdownloads.browserscap.com/
Pro použití v PHP se soubor jmenuje php_browscap.ini.
Můžete použít i automatický script přidaný do cronu, který bude soubor aktualizovat ve vámi nastavených intervalech (například vždy prvního v měsíci v 00:30 hod). Udržování aktuálního souboru je nezbytné pro správnou funkci.
30 00 1 * * wget -O /usr/lib/php/php_browscap.ini http://browsers.garykeith.com/stream.asp?PHP_BrowsCapINI
Do souboru php.ini pak satčí vložit cestu ke staženému browscap souboru.
browscap = /usr/lib/php/php_browscap.ini
A restartovat webový server.
Následující příklad ukazuje, jak by se daly vypsat všechny informace získané o uživatelově prohlížeči.
<?php if( ini_get ( "browscap" )) { $browser = get_browse (null,true); print_r($browser) } ?>
Pomocí init_get(„browscap“) ověříme existenci direktivy browscap v souboru php.ini a předejdeme tak případnému chybovému hlášení. Parametry funkce get_browser jsou popsány v manuálu. První určuje který agent má být analyzován. Výchozí je nastaveno na „HTTP User-Agent header“, tedy na hlavičku příchozího prohlížeče. Druhý parametr nám určuje zda výstupem bude pole nebo objekt. Při nastavení TRUE vrací pole.
Pokud máme vše nastaveno správně tak nám předchozí příklad vypíše obsah pole s podobným obsahem jako vidíme níže:
Array ( [browser_name_regex] => ^mozilla/5\.0 (windows; .*; windows nt 5\.1; .*; rv:1\.9.*) gecko/.* firefox/3\.0.*$ [browser_name_pattern] => Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.9*) Gecko/* Firefox/3.0* [parent] => Firefox 3.0 [platform] => WinXP [win32] => 1 [browser] => Firefox [version] => 3.0 [majorver] => 3 [frames] => 1 [iframes] => 1 [tables] => 1 [cookies] => 1 [javaapplets] => 1 [javascript] => 1 [cssversion] => 2 [supportscss] => 1 [minorver] => 0 [alpha] => [beta] => [win16] => [win64] => [backgroundsounds] => [cdf] => [vbscript] => [activexcontrols] => [isbanned] => [ismobiledevice] => [issyndicationreader] => [crawler] => [aol] => [aolversion] => 0 )
Zde je popis členských proměnných:
parent - označení prohlížeče, ze kterého je daný prohlížeč odvozen
browser - jméno prohlížeče
version - verze prohlížeče
majorver - hlavní číslo verze
minorver - číslo podverze
platform - platforma, na které je prohlížeč spuštěn
tables - obsahuje true , pokud prohlížeč podporuje tabulky
frames - obsahuje true , pokud prohlížeč podporuje rámy
javaapplets - obsahuje true , pokud prohlížeč podporuje Java-aplety
javascript - obsahuje true , pokud prohlížeč podporuje javascript
vbscript - obsahuje true , pokud prohlížeč podporuje VB Script
supprotcss- obsahuje true , pokud prohlížeč podporuje CSS
cookies - obsahuje true , pokud prohlížeč podporuje cookies
activexcontrols - obsahuje true , pokud prohlížeč podporuje prvky ActiveX
ismobiledevice – obsahuje true , pokud se jedná o prohlížeč mobilního telefonu
crawler- obsahuje true , pokud je návštěvníkem robot (například GoogleBot)
POZOR: u některých proměnných jako například javascript, javaapplet, vbscrip, cookie, activexcontrols nám říká pouze zda tyto techmologie prohlížeč podporuje a neříká už nic o tom zda má uživatel podporu této technologie zapnutou či nikoliv. Neříká nám tedy zda má uživatel povoleny cookies či nikoliv.
Nyní tedy máme informace o tom kdo k nám na stránky přišel. Jak tyto informace využít si ukážeme příště.