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