Výhybky pro web

Pokud vytváříte WWW stránky, jistě chcete vědět, jaký prohlížeč používá váš návštěvník.
Pokud vytváříte WWW stránky, jistě chcete vědět, jaký prohlížeč používá váš návštěvník. Používáte-li Microsoft Internet Information Server, existuje několik snadných způsobů, jak to zjistit a využít toho.

Browser Capabilities
Přímo v IIS je vestavěn objekt Browser Capabilities, pomocí kterého můžete zjistit informace o prohlížeči a jeho schopnostech (například zda zvládá Javu, ActiveX a podobně). Má však i několik nevýhod, o kterých se zmíním později. Jeho použití je snadné - pomocí <%Set BC = Server.CreateObject("MSWC.BrowserType")%> vytvoříte objekt, prostřednictvím jehož vlastností zjišťujete schopnosti uživatelova prohlížeče (například. <%If BC.ActiveX Then%>). Bližší detaily najdete v nápovědě IIS. Pokud máte na svém počítači nainstalován MS IIS, hledejte na http://localhost/iishelp/iis/htm/asp/comp3xx0.htm.

User-Agent
Výše popsaný objekt využívá toho, že váš prohlížeč s každým svým požadavkem rozesílá i informaci, co je zač. Tato informace je obsažena v HTTP hlavičce jménem User-Agent a je jí řetězec obsahující název a verzi prohlížeče a název operačního systému uživatelova stroje. Co o sobě tvrdí váš prohlížeč, to můžete zjistit třeba zde. Popsaný objekt tento řetězec analyzuje a porovná s databází jemu známých prohlížečů (je uložena v souboru browscap.ini) a vyhodnotí, co daný prohlížeč podporuje a co ne. Má to však tu závažnou nevýhodu, že tuto databázi je nutno udržovat v aktuálním stavu. Takže například používáte-li nejnovější betavezi MSIE 5 (a nemáte upravený browscap.ini), IIS ji řádně neidentifikuje a hlásí, že používáte nějaký prastarý Netscape. Tomu se lze vyhnout tak, že zmíněný řetězec analyzujete sami a vyvodíte z toho patřičné důsledky.
Práci vám může ušetřit mnou napsaná sbírka funkcí UADET (=UserAgent DETection), která určí název a verzi prohlížeče a použitý operační systém. UADET slouží i k rozlišování uživatelů zde na Živě. Obsahuje tři funkce (pro název prohlížeče, jeho verzi a OS), které vracejí trojpísmenný řetězec identifikující daný parametr a jednu funkci, která vrátí kompletní informaci o konfiguraci jako řetězec vhodný k uložení do databáze:


'UADET = User Agent Detection

Function GetBrowserName()
     If InStr(Request.ServerVariables("HTTP_USER_AGENT"),"MSIE") > 0 Then
          GetBrowserName = "MIE"
     ElseIf InStr(Request.ServerVariables("HTTP_USER_AGENT"),"Mozilla") > 0 Then
          GetBrowserName = "NNC"
     Else
          GetBrowserName = "XXX"
     End If
End Function

Function GetBrowserVersion()
     If InStr(Request.ServerVariables("HTTP_USER_AGENT"),"5.") > 0 Then
          GetBrowserVersion = "500"
     ElseIf InStr(Request.ServerVariables("HTTP_USER_AGENT"),"4.") > 0 Then
          GetBrowserVersion = "400"
     ElseIf InStr(Request.ServerVariables("HTTP_USER_AGENT"),"3.") > 0 Then
          GetBrowserVersion = "300"
     ElseIf InStr(Request.ServerVariables("HTTP_USER_AGENT"),"2.") > 0 Then
          GetBrowserVersion = "200"
     ElseIf InStr(Request.ServerVariables("HTTP_USER_AGENT"),"1.") > 0 Then
          GetBrowserVersion = "100"
     Else
          GetBrowserVersion = "XXX"
     End If
End Function

Function GetOS()
     If InStr(Request.ServerVariables("HTTP_USER_AGENT"),"95") * InStr(Request.ServerVariables("HTTP_USER_AGENT"),"Win") > 0 Then
          GetOS = "W95"
     ElseIf InStr(Request.ServerVariables("HTTP_USER_AGENT"),"98") * InStr(Request.ServerVariables("HTTP_USER_AGENT"),"Win") > 0 Then
          GetOS = "W98"
     ElseIf InStr(Request.ServerVariables("HTTP_USER_AGENT"),"NT") * InStr(Request.ServerVariables("HTTP_USER_AGENT"),"Win") > 0 Then
          GetOS = "WNT"
     ElseIf InStr(Request.ServerVariables("HTTP_USER_AGENT"),"Win") > 0 Then
          GetOS = "W3X"
     ElseIf InStr(Request.ServerVariables("HTTP_USER_AGENT"),"Mac") > 0 Then
          GetOS = "MAC"
     Else
          GetOS = "XXX"
     End If
End Function

Function GetIDString()
     GetIDString = "B:" & GetBrowserName & ";V:" & GetBrowserVersion & ";S:" & GetOS
End Function

Diskuze (2) Další článek: Autodesk kupuje Discreet Logic, ale hodně draho

Témata článku: , , , , , , , ,