| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ka₧d² tvorca, ktor² u₧ postavil nejak· t· internetov· strßnku, sa na konci svojej namßhavej prßce zvΣΦÜa pozrie na svoje dielo a zamyslφ sa, ko╛ko a ako bud· jeho strßnku vlastne potencionßlni nßvÜtevnφci vyu₧φva¥. Jeho zvedavos¥ sa m⌠₧e uspokoji¥ t²m, ₧e sa zaΦne pozera¥ do svojich log zßznamov, alebo siahne po nejakej vo╛ne dostupnej slu₧be, ktorß mu dß mo₧nos¥ vlo₧i¥ urΦit² k≤d priamo do strßnky. Tieto mo₧nosti s· Φasovo nenßroΦnΘ na tvorbu, avÜak nedßvaj· ·pln² preh╛ad o jednotliv²ch odkazoch na jednej strßnke, preto vznikß potreba tvorby systΘmu, ktor² by spσ≥al viac po₧iadaviek.
ZaΦnime prφkladom a jeho popisom. Zßkladom celΘho presmerovania je prφkaz Response.Redirect, ktor² si hne∩ ukß₧eme:
æ Definujeme si premenn· URL
Dim URL
æ Priradφme k premennej url adresu
URL = ôhttp://www.interval.czö
æ pou₧ijeme samotn² skript s premennou
Response.Redirect(URL)
%>
Tento skript, ak si ho spustφte, vßs presmeruje na strßnku s adresou http://www.interval.cz. V²hoda tohto ASP prφkazu spoΦφva hlavne v tom, ₧e sa dß pou₧i¥ a₧ potom, Φo sa vykonß jednoduch² skript so zßpisom o tom, ₧e nßvÜtevnφk prejavil zßujem o dan· adresu (URL).
Ak chceme pou₧i¥ r⌠zne internetovΘ adresy, musφme zφska¥ hodnotu premennej cez prφkaz Request.QueryString. Tu sa naskytuj· dve mo₧nosti, bu∩ vlo₧φme do parametru cel· internetov· adresu alebo pou₧ijeme skratku, Üpecifick· pre dan· internetov· adresu (ID Φφslo, krßtky jednoslovn² nßzov). Osobne preferujem druh· mo₧nos¥ hne∩ z nieko╛k²ch d⌠vodov.
V rßmci prvej mo₧nosti m⌠₧e vznikn·¥ problΘm, ak ju nepou₧ijete spolu s prφkazom URLEncode, ktor² robφ prφkaz Request.QueryString pou₧ite╛n²m medzi strßnkami. Prφkazov² riadok v prehliadaΦi je tie₧ dos¥ nepreh╛adn². Namiesto toho je prijate╛nejÜia spomφnanß skratka, ktorß robφ prφkaz krajÜφm a tie₧ Vßm dßva mo₧nos¥ sledova¥ nieko╛ko liniek na t· ist· internetov· adresu. To sa dß vyu₧i¥ najmΣ pri bannerovej reklame.
╚o vÜetko potrebujeme?
Zßkladom celΘho systΘmu s· obsluhuj·ce ASP skripty a databßza, do ktorej sa ·daje bud· zapisova¥. Pre svoju jednoduchos¥ budeme v tomto prφklade pou₧φva¥ databßzu MS Access, ktorß je pou₧ite╛nß sk⌠r na mal²ch internetov²ch strßnkach Φi v intranete, preto₧e nedokß₧e spracovßva¥ nieko╛ko prφstupov od r⌠znych u₧φvate╛ov naraz.
V prφpade, ₧e pou₧φvate systΘm NTFS, musφte si najprv nastavi¥ prßva pre zßpis do databßzy, bu∩ to bud· prßva pre cel² adresßr, v ktorom je databßza ulo₧enß, alebo nastavφte prßva pre zßpis iba pre samotn· databßzu, s·bor s prφponou mdb.
ètrukt·ra aplikßcie
- 2x tabu╛ky û tblClickInfo, tblClickLog
- 1x skript û ClickTracker.asp
ZaΦnime s tabu╛kami a ich ·dajmi. Najprv si urΦφme Unikßtne ID a, aby systΘm fungoval, tak aj samotn· internetov· adresu. DodatoΦne m⌠₧eme priradi¥ k adrese i prijate╛nejÜφ nßzov.
Nßzov po╛a | Dßtov² typ | Popis |
id | automatickΘ Φφslo | Unikßtne Φφslo adresy internetovej strßnky. |
nazov | text(50) | Unikßtny prijate╛nejÜφ nßzov, ktor²m Üpecifikujeme adresu na pou₧itie. |
url | text(255) | Internetovß adresa, kam chceme pou₧φvate╛a posla¥. |
Nßzov po╛a | Dßtov² typ | Popis |
link_id | automatickΘ Φφslo | Unikßtne Φφslo adresy internetovej strßnky tabu╛ky tblClickInfo, ktorej ·daje patria. |
hit_datum | datum | Dßtum kedy sa linka pou₧ila |
hit_pocet | Φφslo | PoΦet prφstupov pre internetov· adresu v poli link_id poΦas dßtumu v poli dßtumu. |
hit_datum | datum | ╚as poslednej nßvÜtevy za dan² de≥. |
Potom, Φo sme si vytvorili potrebnΘ tabu╛ky a naplnili ich adresami strßnok, musφme vytvori¥ skript, ktor² by obsluhoval zßpis do tabuliek a presmeroval pou₧φvate╛a na jeho vyt·₧en· internetov· strßnku (ClickTracker.asp):
<%
' Zßklad pre programovanie v ASP, aby boli vÜetky premennΘ deklarovanΘ
Option Explicit
' UrΦime si potrebnΘ premennΘ:
' Prijate╛nejÜφ nßzov internetovej adresy na presmerovanie
Dim strMeno
' ADODB Spojenie
Dim conn
' Tabu╛ka tblClickInfo
Dim tblClickInfo
' Tabu╛ka tblClickLog
Dim tblClickLog
' SQL prφkaz pre zßpis do tabu╛ky tblClickLog
Dim strSQLlog
' SQL prφkaz pre v²ber adresy strßnky z tabu╛ky tblClickInfo
Dim strSQLinfo
' Unikßtne id presmerovania pre zßpis
Dim UniId
' Pomocou tohto prφkazu zistφme prijate╛nejÜφ nßzov internetovej adresy
' M⌠₧e ma¥ tvar: http://server/clicktracker.asp?nazov=intervalcz
' kde intervalcz je prßve spomφnan² prijate╛nejÜφ nßzov
strMeno = Request.QueryString("nazov")
' Vytvorime si ADO spojenie
Set conn = Server.CreateObject("ADODB.Connection")
' Cesta a driver pre spojenie s databazou MS ACCESS
conn.open "DRIVER={Microsoft Access Driver (*.mdb)};admin;DBQ="&_
Server.MapPath("../clicktracker/db/ClickTracker.mdb")
' Vytvorit ADO tabulku
Set tblClickInfo = Server.CreateObject("ADODB.Recordset")
' Vyh╛adat zßznam, ktor² mß prijate╛nejÜφ nßzov v premennej strMeno
strSQLinfo = "SELECT id, wwwadresa FROM tblClickInfo WHERE nazov = '" & strMeno & "'"
' Pou₧it prφkazy
tblClickInfo.Open strSQLinfo,conn,2,2
' Ak zφskame zßznam, potom prejdeme na internetov· adresu ulo₧en· v databßze
If Not tblClickInfo.EOF Then
' Prira∩ unikßtne ID linky
UniId = tblClickInfo("id")
' Prira∩ samotn· linku
strMeno = tblClickInfo("wwwadresa")
' Mßme teda vÜetko z databßzy a m⌠₧eme ju uzavrie¥
tblClickInfo.Close
Set tblClickInfo = Nothing
' Musφme si prisp⌠sobi¥ formßt dßtumu pre databßzu, aby s nami pracovala korektne.
' Tu chcem zd⌠razni¥, ₧e ak budete ma¥ problΘm s dßtumom, je to otßzka regionßlneho
' nastavenia vo VaÜom PC a prostredia databazy, ktorΘ sa nemusia zhodova¥.
' MS SQL pou₧φva na ohraniΦenie dßtumu znaΦku ' , MS ACCESS pou₧φva #
Dim Datum
Datum = "#" & Month(now()) & "/" & Day(now()) & "/" & Year(now()) & "#"
' Teraz pou₧ijeme SQL prφkaz, aby sme vybrali u₧ existuj·ci zßpis
strSQLlog = "SELECT link_id, hit_datum, hit_pocet, hit_posledne FROM tblClickLog " &_
"WHERE link_id = " & UniId & " AND hit_datum = " & Datum
' Vytvorite si ADO tabu╛ku
Set tblClickLog = Server.CreateObject("ADODB.Recordset")
' Pou₧i¥ prφkazy
tblClickLog.Open strSQLlog,conn,2,2
' Ak sa zßznam nenaÜiel, znamenß to, ₧e dnes sa pou₧ije internetovß adresa
' po prv² krßt a tak pridßme hodnotu 1 ...
If tblClickLog.EOF Then
tblClickLog.AddNew
tblClickLog("link_id") = UniId
tblClickLog("hit_datum") = Date()
tblClickLog("hit_pocet") = 1
tblClickLog("hit_posledne") = Time()
' ... inak aktualizujeme zßznam a Φas prφstupu na internetov· adresu
Else
tblClickLog("hit_pocet") = tblClickLog("hit_pocet") + 1
tblClickLog("hit_posledne") = Time()
End If
' Ulo₧φme zmeny
tblClickLog.Update
' Zatvorφme a zruÜime spojenie
tblClickLog.Close
Set tblClickLog = Nothing
Else
' Ak nieje ₧iadny zßznam v databßze o internetovej adrese potom presmerova¥ na ·vodnu
' stranku
strMeno = "/"
End If
' ZruÜφme spojenie
conn.Close
Set conn = Nothing
' Presmerujeme nßvÜtevnika, kam si za₧iada
Response.Redirect strMeno
%>
Pridßvanie, mazanie a ·prava odkazov
Potom, ako ste si vytvorili samotnΘ presmerovanie, si m⌠₧ete vytvori¥ skripty na pridßvanie, mazanie a ·pravu odkazov, aby vßm spravili obsluhu ╛ahÜou. Je to ve╛mi d⌠le₧itß vec. S·bory s nßzvom pridaj.asp, vymaz.asp a uprav.asp s· ulo₧enΘ v adresßri admin v pribalenom zip archφve. Maj· sφce ve╛mi strohΘ grafickΘ rozhranie, ale to je u₧ na vßs, ako si ich prikrßÜlite.
ètatistika prφstupov
╧alÜφm a zßrove≥ posledn²m krokom je samotn² preh╛ad prφstupov, na Φo sl·₧i skript prehlad.asp v adresßri statistika v pribalenom zip archφve. Ukazuje, ako sa vyvφjali prφstupy celkovo a ako za ka₧d² de≥.