<meta http-equiv='pics-label' content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline EN v2.0" l gen true for "http://interval.cz" r (nz 1 vz 1 lz 1 oz 1 cz 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://interval.cz" r (n 0 s 0 v 0 l 0))' />
<h2>Identifikace prohlφ₧eΦ∙ v mobilnφch telefonech</h2>
<p id='prepend'>P°i tvorb∞ strßnek se sna₧φm odd∞lovat vzhled od obsahu tφm, ₧e pou₧φvßm XHTML a CSS. Nedßvno jsem ale narazil na jeden problΘm. Vytvß°el jsem strßnku, ve kterΘ jsem navigaΦnφ nabφdku umis¥oval absolutnφm pozicovßnφm do levΘho sloupce. Nic by na tom nebylo, kdybych se na strßnku nepodφval mobilnφm telefonem. Zjistil jsem, ₧e navigaΦnφ menu nikde nenφ.</p>
<p>Testovßnφm jsem dosp∞l k zßv∞ru, ₧e m∙j mobilnφ telefon sice podporuje n∞kterΘ vlastnosti CSS, ale ne vÜechny a asi ne ·pln∞ sprßvn∞. P°ivedlo m∞ to tedy na myÜlenku, ₧e kdybych pro mobilnφ telefony odstranil definici CSS, strßnky by se zobrazovaly sprßvn∞. Zkusil jsem to ud∞lat ruΦn∞ a bylo to skuteΦn∞ tak.</p>
<p>Jen₧e jsem narazil na problΘm, jak programov∞ zjistit, ₧e se na strßnky dφvß n∞kdo z mobilnφho telefonu. Napadlo m∞, ₧e by se dal mobilnφ prohlφ₧eΦ (prohlφ₧eΦ v mobilnφm telefonu) rozpoznat podle v²skytu urΦitΘho °et∞zce v identifikaci prohlφ₧eΦe. Ka₧d² prohlφ₧eΦ se toti₧ strßnce identifikuje urΦit²m °et∞zcem, kter² obsahuje r∙znΘ informace o typu prohlφ₧eΦe. Tato identifikace se naÜt∞stφ dß zjistit jednoduch²m skriptem.</p>
<p>Te∩ u₧ jen zb²valo zφskat dostateΦn∞ velk² vzorek identifikacφ r∙zn²ch druh∙ prohlφ₧eΦ∙ (hlavn∞ t∞ch mobilnφch) a sestavit n∞jak² °φdφcφ °et∞zec, podle kterΘho by se daly identifikovat mobilnφ prohlφ₧eΦe.</p>
<p>Poda°ilo se mi na internetu najφt seznam, kter² obsahoval vφce ne₧ p∞t tisφc r∙zn²ch identifikacφ prohlφ₧eΦ∙, p°evß₧n∞ z mobilnφch telefon∙, a na zßklad∞ tohoto seznamu jsem sestavil °φdφcφ °et∞zec a naprogramoval funkci, kterß podle test∙ dokß₧e na 98,2 % identifikovat prohlφ₧eΦ z mobilnφho telefonu. Funkci jsem nazval <code>IsMobile</code> a jejφ k≤d m∙₧ete vid∞t nφ₧e.</p>
<p>Nejd°φve jsem vytvo°il strßnku, kterß pou₧φvala v²Üe uvedenΘ skripty pro vypsßnφ identifikace prohlφ₧eΦe, ze kterΘ jsem cht∞l zφskßvat identifikace mobilnφch telefon∙ na zßklad∞ p°φsp∞vk∙ od u₧ivatel∙ strßnek. Ukßzalo se, ₧e to nenφ dobrß metoda, a proto mi DuÜan Janovsk² (Yuh∙) poskytl seznam osmdesßti Üesti identifikacφ mobilnφch prohlφ₧eΦ∙ z LOGu <a href='http://www.jakpsatweb.cz/weblog/'>jeho webu</a>, co₧ bylo sice velmi malΘ mno₧stvφ, ale postaΦujφcφ pro zßkladnφ anal²zu.</p>
<p>Vzhledem k tomu, ₧e zp∙sob zφskßvßnφ identifikaΦnφch °et∞zc∙ se mi zdßl nedostateΦn² (zdlouhav² postup a malß pravd∞podobnost zφskßnφ v∞tÜφho poΦtu zßjemc∙ o ·Φast), napadlo m∞, ₧e bych se po identifikacφch mobilnφch prohlφ₧eΦ∙ mohl poohlΘdnout na internetu. Poda°ilo se mi najφt <a href='http://www.postfile.com/downloads/_external/agents.php'>seznam</a>, kter² obsahoval (po odstran∞nφ r∙znΘho smetφ) 5 102 zßznam∙, a ten se mi zdßl ji₧ dostateΦn∞ velk² k praktickΘmu pou₧itφ.</p>
<p>Anal²zou tohoto seznamu jsem sestavil nejΦast∞ji se vyskytujφcφ °et∞zce, kterΘ jednoznaΦn∞ identifikovaly mobilnφ prohlφ₧eΦe, a sestavil jsem je podle Φetnosti jejich v²skytu do °φdφcφho °et∞zce, kter² jsem pak pou₧il v regulßrnφm v²razu ve funkci <code>IsMobile</code>.</p>
<h3>Metodika pou₧itß p°i anal²ze</h3>
<p>Nejprve jsem provedl odhad nejΦast∞ji se vyskytujφcφch °et∞zc∙ v identifikacφch mobilnφch prohlφ₧eΦ∙. Podφval jsem se tedy na identifikace a °et∞zec, kter² se na prvnφ pohled vyskytoval nejΦast∞ji, jsem pou₧il. PotΘ jsem poΦφtal Φetnost v²skytu t∞chto jednotliv²ch °et∞zc∙ a kontroloval °ßdky, kterΘ do v²sledku nezapadaly. Postupn∞ jsem tak urΦoval dalÜφ °et∞zce, kterΘ se daly pou₧φt. Postupn²m poΦφtßnφm Φetnostφ v²skytu t∞chto °et∞zc∙ jsem dosp∞l a₧ ke koneΦnΘmu sestavenφ °φdφcφho °et∞zce.</p>
<h3>Vyu₧itφ funkce <code>IsMobile</code></h3>
<p>Tato funkce m∙₧e poslou₧it vÜem tv∙rc∙m strßnek, a¥ u₧ p°ipravovan²ch "ruΦn∞" Φi dynamicky generovan²ch, kte°φ necht∞jφ nebo nemohou udr₧ovat vφce verzφ strßnek (pro mobily a desktopy). Funkce se dß pou₧φt nejen pro odfiltrovßnφ definic CSS, ale v podstat∞ pro jakoukoli jinou filtraci informacφ, kterΘ se majφ nebo nemajφ zobrazovat p°i p°φstupu z mobilnφho telefonu (nap°φklad odfiltrovßnφ reklamnφch banner∙ a podobn∞).</p>