Statistika přístupů v PHP – vyhledávací fráze
V dnešním pokračování navážeme na předchozí díl a řekneme si, jak zjistit, které fráze používají návštěvníci ve vyhledávačích jako je Seznam nebo Google.
Hotovou aplikaci si můžete prohlédnout a vyzkoušet. V ukázkové verzi se provádí statistika přístupů stránek www.czechia.cz/help.
Na úvod by se hodilo říci, co je vlastně ta "vyhledávací fráze". Jedná se o text (slovo, věta…), který uživatel zadal v některém vyhledávači. Tento vyhledávač mu našel několik odkazů odpovídajících danému textu, odkazy jsou většinou zobrazeny na stránce, jejíž URL má tvar http://www.vyhledavac.cz/search.php?promenna=vyhledavaci_fraze. Mezi nalezenými odkazy je i odkaz na naši stránku. Uživatel na něj klikne a dostanete se tak na naše stránky, přičemž v hlavičce Referer je uložena výše popsaná stránka určitého vyhledávače. Tuto hlavičku jsme využili již předchozím díle při vytváření statistiky serverů, ze kterých návštěvníci přicházejí. Kromě toho se dá z hlavičky vyčíst i použitá vyhledávací fráze.
Vytvořením statistiky vyhledávacích frází si můžeme ověřit např. zda uživatelé najdou na našich stránkách to, co hledají, zda se nedostávají na naše stránky nějakým omylem atd. Úplné pochopení celé problematiky vyžaduje znalost předchozího článku. Připomenu proto jen nejdůležitější věc: hlavička Referer je uložena v proměnné $referer.
Část zjišťující, zda uživatel přišel z vyhledávače a použil přitom nějakou frázi, umístíme do poslední větve podmínky zjišťující, odkud návštěvník přišel. Úvodní část této větve, kterou znáte z předchozího dílu, provádí obecnou statistiku příchodů z cizích stránek. Hned poté se můžeme pustit do "kuchání" vyhledávací fráze.
|
Databázová struktura
Celá statistika vyhledávacích frází (přístupů z vyhledávačů) bude úplně oddělena od základní databázové tabulky access a bude tvořena celkem třemi tabulkami, což dobře znázorňuje následující schéma. Nejdůležitější je tabulka searched obsahující datum přístupu z určitého vyhledávače a použitou frázi. Protože vyhledávací fráze i vyhledávače se budou opakovat, bude lepší tyto údaje ukládat do tabulky searched jako cizí klíče z tabulek searchengine a searchtext.
Tabulky vytvoříme pomocí těchto SQL dotazů.
|
- id - unikátní označení každého přístupu s použitím vyhledávací fráze (primární klíč)
- search_date - datum a čas tohoto přístupu
- server - použitý vyhledávač
- query - použitá fráze
|
- id - unikátní označení každého vyhledávače (primární klíč)
- server - doménová adresa vyhledávače
- variable - proměnná, kterou server používá pro vyhledávaní (obsahuje vyhledávací frázi)
|
- id - unikátní označení každé vyhledávací fráze (primární klíč)
- query - text fráze
Abychom mohli něco zjistit, musíme mít v tabulce searchengine nějaká data, tj. informace o nejvýznamnějších vyhledávačích. Nejdůležitější je položka variable. Možná ještě někomu není úplně jasné, co vlastně obsahuje. Uvedu proto jeden příklad. Máme odkaz http://search.seznam.cz/search.cgi?w=biologie. Vyhledávací fráze "biologie" je obsažena v proměnné "w" a právě tu uložíme do položky variable. Seznam nejdůležitějších českých a zahraničních vyhledávačů přináší tato tabulka (searchengine):
|
Teorii máme za sebou, nyní přichází na řadu praxe. Z minulého dílu víme, jak z URL zjistit doménovou adresu. Z doménové části odkazu $http_referer (tj. $url["host"]) musíme zjistit doménu druhé a první úrovně, abychom ji mohli porovnat se záznamy v tabulce searchengine a případně pokračovat dál. Pokud byl nějaký záznam nalezen, znamená to, že uživatel přichází z vyhledávače a můžeme se tedy pustit do zjištění použité vyhledávací fráze. Část odkazu za "?" (= dotaz), kterou máme po zpracování odkazu funkcí URL_Parse v poli s indexem query, obsahuje kromě dalších proměnných i námi hledanou proměnnou obsahující vyhledávací frázi.
Po rozdělení na jednotlivé proměnné oddělené znakem "&", zjistíme pomocí jednoduchého cyklu obsah dané proměnné ($result["variable"]), tj vyhledávací frázi. Celou proměnnou nejprve rozdělíme na části oddělené "=". V první části je pak název proměnné, v druhé obsah proměnné (= vyhledávací fráze). Vyhledávací frázi si na závěr uložíme do proměnné $searchtext.
|
Někdy se může stát, že uživatel sice přijde např. ze Seznamu, ale nepoužije vyhledávání, nýbrž katalog. Poté se žádná fráze zjistit nedá, a tak musíme uvést následující podmínku. Za ní nejprve pomocí známých postupů uložíme do tabulky searchtext vyhledávací frázi a následně do tabulky searched veškeré informace o daném přístupu z vyhledávače.
|
Vyhodnocení
Statistiku použitých vyhledávacích frází za dané období vypíšeme do jedné tabulky. Na prvním řádku bude celkový počet přístupů s použitím vyhledávací fráze. Do dalších řádků vložíme počet přístupů z jednotlivých vyhledávačů. Pod každým vyhledávačem pak bude seznam vyhledávacích frází, počet použití dané fráze a její podíl na celkovém počtu.
|
V prvním SQL dotazu, který zjišťuje zastoupení jednotlivých vyhledávačů, spojíme tabulky searchengine a searched. V druhém SQL dotazu, zjišťujícím fráze použité na jednotlivých vyhledávačích, spojíme tabulky searchtext a searched, přičemž nesmíme zapomenout na podmínku WHERE searched.server = '$id', kde $id je označení právě zpracovávaného serveru, které získáme z prvního dotazu. Myslím, že SQL dotazy žádný další komentář nepotřebují, vztahy mezi tabulkami totiž dobře znázorňuje výše uvedené schéma. Další postup, tj. výpočet šířky obrázku a podílu byl komentován ve třetím díle.
|
Příště začneme pracovat s doménovou adresou počítače, ze kterého přišel požadavek, přičemž se zaměříme na statistiku domén nejvyšší úrovně.
Předchozí díly:
Statistika přístupů v PHP – odkud přicházejí návštěvníci
Statistika přístupů v PHP – rozlišení a barevná hloubka
Statistika přístupů v PHP – detekce operačního systému
Statistika přístupů v PHP – detekce prohlížeče
Statistika přístupů v PHP – počet unikátních návštěvníků