home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 March / Chip_1999-03_cd.bin / kaleid / Chip_txt / TXT / 88.TXT < prev    next >
Text File  |  1999-02-01  |  8KB  |  52 lines

  1. Programování s Active Server Pages
  2. V dalτím díle naτeho seriálu o programování ASP stránek vám Chip ukáºe dva zpàsoby, jak lze zjistit typ a vlastnosti prohlíºeƒe WWW stránek. Vaτe stránky budou τité na míru prohlíºeƒi a ƒtená²i vás za to budou mít rádi.
  3.  
  4. Programování ASP stránek - 2. díl
  5.  
  6. Pokud jiº máte s vytvá²ením stránek dlouhodob╪jτí zkuτenosti, moºná si jeτt╪ vzpomínáte na dobu, kdy v╪tτina prohlíºeƒà zobrazovala WWW stránky zcela identicky. S tím, jak se jednotlivé prohlíºeƒe zdokonalovaly, se tato identita zaƒala postupn╪ vytrácet. N╪které firmy si totiº do sv∞ch prohlíºeƒà p²idaly podporu vlastních HTML tagà a jaksi tiτe poƒítaly s tím, ºe i jejich nové p²íkazy budou zahrnuty do nové specifikace HTML jazyka, pravideln╪ korigované a schvalované konsorciem W3C. Klasick∞m p²íkladem jsou dva z dnes nejpouºívan╪jτích prohlíºeƒà - Microsoft Internet Explorer a Netscape Navigator. Oba obsahují podporu ²ady nov∞ch HTML p²íkazà a zajímav∞ch technologií (nap². ActiveX, Javy a dalτích), to vτe vτak za cenu ƒásteƒné ztráty vzájemné kompatibility p²i zobrazování stránek. Technické vymoºenosti, které rozvoj webu p²inesl, tak paradoxn╪ "odskákali" v∞vojá²i a designé²i. Pokud cht╪jí vytvo²it WWW prezentaci na skuteƒn╪ profesionální úrovni, musí se p²izpàsobit uºivatelàm internetu a naprogramovat stránky tak, aby vypadaly pokud moºno stejn╪ v obou typech prohlíºeƒà. D╪lají to tak, ºe vytvo²í zvláτtní verzi WWW stránky speciáln╪ pro kaºd∞ typ prohlíºeƒe, p²iƒemº vyuºijí moºností a funkcí, které jim dan∞ prohlíºeƒ nabízí.
  7. Protoºe dnes pouºívá p²eváºná ƒást uºivatelà internetu pouze dva typy prohlíºeƒà - Netscape Navigator nebo Internet Explorer, vznikají WWW stránky hned ve dvou provedeních. Jedin∞ problém tvàrce prezentace spoƒívá v rozliτení uºivatelà podle typu prohlíºeƒe, kter∞ pouºívají, a zaslání odpovídající verze WWW stránky. Tento problém nelze ²eτit klasick∞mi HTML p²íkazy a je t²eba zvolit metodu, pomocí které lze bezpeƒn╪ identifikovat typ prohlíºeƒe, jímº uºivatel internetu práv╪ p²istupuje na danou stránku. Jedním z pom╪rn╪ jednoduch∞ch ²eτení je rozliτování pomocí programov∞ch skriptà umíst╪n∞ch uvnit² aktivních ASP stránek.
  8.  
  9. Prohlíºeƒi, p²iznej barvu!
  10. Pro ²eτení naτeho problému vyuºijeme jednu z p╪ti základních programov∞ch komponent (server-side ActiveX Controls), která se jmenuje Browser Capabilities Component, a do své ASP stránky zakomponujeme skript obsahující volání této komponenty. Zde je:
  11.  
  12. <% Set bc = Server.CreateObject 
  13.             ("MSWC.BrowserType") %>
  14.  
  15. Cel∞ proces identifikace typu prohlíºeƒe potom probíhá následujícím zpàsobem: Uºivatel klepne myτí na odkaz nebo p²ímo napíτe adresu naτí WWW stránky. Tím poτle na server poºadavek na zaslání naτí WWW stránky. Zároveσ s dotazem se na server poτle speciální textov∞ kód (²íkejme mu sekvence), kter∞ identifikuje typ pouºívaného prohlíºeƒe (nap². u Internet Exploreru jde o sekvenci Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)). P²i kompilaci ASP stránky dojde k volání jiº zmiσované programové komponenty, která vyhodnotí získanou sekvenci znakà a do strukturované prom╪nné bc p²i²adí n╪kolik hodnot obsahujících informace o typu, verzi a vlastnostech prohlíºeƒe WWW stránek ºádajícího o zaslání aktuální stránky. Strukturu t╪chto informací naleznete v tabulce, v∞stupy ASP stránky jsou prezentovány na obrázku.
  16. Jak vidíte, komponenta zjistí u prohlíºeƒe nejenom jeho typ (Browser), ale také celou ²adu dalτích vlastností. Zní to moºná aº p²ehnan╪, ale p²i tvorb╪ WWW stránek vyuºijete i prom╪nnou Version. U n╪kter∞ch prohlíºeƒà totiº dochází k menτím rozdílnostem v zobrazování stránek dokonce i mezi ràzn∞mi verzemi (nap². u IE mezi verzí 3.01 a 4.0). S prom╪nnou Tables si v╪tτinou nemusíte d╪lat starosti, nebo£ ²azení dat a textà do tabulek podporují dnes jiº prakticky vτechny prohlíºeƒe. Podobn╪ je to v p²ípad╪ hodnoty prom╪nné Frames, rozƒlenit stránku do rámeƒkà umí p²eváºná ƒást prohlíºeƒà. Z posledních t²í prom╪nn∞ch je zajímavá aº prom╪nná JScript, jejíº kladná hodnota vypovídá o tom, ºe prohlíºeƒ dokáºe pracovat s JavaScriptem. Ten se v∞born╪ hodí pro opravování vstupních údajà p²i vyplσování formulá²à a povíme si o n╪m více v n╪kterém z dalτích dílà tohoto seriálu.
  17. Nic ovτem není dokonalé a také Browser Capabilities Component má své "muchy", jak se u nás doma ²íká. Pro anal∞zu sekvence znakà zasílané prohlíºeƒem pouºívá speciální soubor browscap.ini, ve kterém jsou uloºeny vτechny doposud známé sekvence a jim odpovídající typy prohlíºeƒà. Komponenta tudíº nic nezjiτ£uje, pouze systematicky porovnává sekvence znakà v souboru browscap.ini tak dlouho, dokud nenarazí na odpovídající prohlíºeƒ. Problém nastává v situaci, kdy dané sekvenci neodpovídá v souboru ºádn∞ prohlíºeƒ. V tom p²ípad╪ si neví komponenta rady a do prom╪nn∞ch Browser a Version p²i²adí hodnotu Unknown. K tomuto stavu dochází ƒasto v p²ípad╪, ºe se na internetu objeví nové verze prohlíºeƒà, které logicky nemohou b∞t zahrnuty v souboru browscap.ini, a komponenta je proto neumí rozeznat. Proto doporuƒujeme soubor browscap.ini pravideln╪ aktualizovat o nové verze prohlíºeƒà nebo - jeτt╪ lépe - stáhnout si z internetu novou verzi tohoto souboru a p²epsat jí starou verzi. Ta se na systému Windows NT nachází v adresá²i \winnt\system32\initsrv\ASP\Cmpnts (pro MS IIS ve verzi 3.0) nebo p²ímo v adresá²i \winnt\system32\initsrv, pokud pouºíváte MS IIS 4.0. Nejnov╪jτí soubor browscap.ini jsme jiº pro vás stáhli z internetu a naleznete jej na Chip CD v tomto ƒísle.
  18. Existuje jeτt╪ dalτí zpàsob, jak s pomocí ASP urƒit typ pouºitého prohlíºeƒe. Pokud chcete mít skuteƒn╪ jistotu rozliτení jednotliv∞ch prohlíºeƒà a postaƒí vám, kdyº budete znát pouze jeho jméno, lze vyjít z p²ímé anal∞zy sekvence zasílané p²i poºadavku prohlíºeƒem klienta (nap². Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)). Bliºτím rozborem zjistíte, ºe text obsahuje jméno prohlíºeƒe a typ operaƒního systému, na kterém b╪ºí. V tomto p²ípad╪ se jedná o Microsoft Internet Explorer ve verzi 4.01 b╪ºícím na Windows NT. Do ASP stránky lze rozpoznávání zabudovat ve dvou ²ádcích. V prvním ²ádku naƒteme do prom╪nné Agent sekvenci zasílanou prohlíºeƒem a na druhém ²ádku ji pomocí funkce InStr zanalyzujeme. Jestliºe nalezneme v sekvenci ²et╪zec znakà MSIE, povaºujeme prohlíºeƒ za Internet Explorer a zobrazíme stránku optimalizovanou práv╪ pro n╪j. Zde je v∞pis zdrojového kódu skriptu:
  19.  
  20. <% agent = Request.ServerVariables ("HTTP_USER_AGENT") %>
  21. <% If InStr(1, agent, "MSIE", 1) > 0
  22.                              Then %>
  23. zobraz stránku optimalizovanou pro Internet Explorer
  24. <% Else %>
  25. zobraz stránku optimalizovanou pro ostatní prohlíºeƒe (typicky Netscape Navigator)
  26. <% End If %>
  27.  
  28. Tento zpàsob identifikace má jednu v∞hodu. Nemusíme volat komponentu Browser Capabilities Component - tím mírn╪ odlehƒíme zát╪ºi serveru, a cel∞ proces by se tak m╪l teoreticky zrychlit. Analogicky màºeme zapsat tento rozhodovací algoritmus také pro p²ípad, kdy pouºíváme k identifikaci prohlíºeƒe jiº zmiσovanou komponentu.
  29.  
  30. <% Set bc = Server.CreateObject ("MSWC.BrowserType") %>
  31. <% If bc.Browser = "IE" Then %>
  32. zobraz stránku optimalizovanou pro Internet Explorer
  33. <% Else %>
  34. zobraz stránku optimalizovanou pro ostatní prohlíºeƒe (typicky Netscape Navigator)
  35. <% End If %>
  36.  
  37. V∞hodou je v tomto p²ípad╪ moºnost vyuºití dalτích vlastností prohlíºeƒe zjiτt╪n∞ch komponentou.
  38.  
  39. Záv╪rem
  40. Vτechny programové skripty popsané v tomto ƒlánku naleznete na Chip CD v rubrice "Zkuste si sami" pod názvem ASP. Nemusíte je tak pracn╪ p²episovat do poƒítaƒe a odla╘ovat chyby vzniklé necht╪n∞m p²eklepem. Ve stejném adresá²i najdete také poslední aktualizovan∞ soubor browscap.ini. Tolik tedy k identifikaci typu prohlíºeƒe pouºívaného klientem. V dalτím díle naτeho seriálu se podíváme na moºnosti práce ASP stránek s databázemi a ukáºeme si zpàsoby posílání parametrà mezi jednotliv∞mi stránkami.
  41. Martin Dvo²áƒek
  42.  
  43. Zajímavé odkazy
  44. aneb kde najdete více informací o ASP stránkách.
  45. Active Server Pages: 
  46. www.activeserverpages.com
  47. ServerObjects: http://www.serverobjects.com/
  48. Sv╪t namodro: 
  49. http://svet.namodro.cz/go/r-rubrika.asp?id=90
  50. Developer.cz: http://www.developer.cz/
  51.  
  52.