Interval.cz
Sledovanie odkazov na strßnke pomocou ASP

Viete, ktorΘ odkazy na vaÜej strßnke sa najviac vyu₧φvaj·? Viete, ako intenzφvne sa poΦas d≥a pou₧φvaj·? Poznßte Φas, kedy bol ten ktor² odkaz naposledy vyu₧it²? Odpove∩ nßjdete prßve v tomto Φlßnku, v ktorom si vysvetlφme jednoduch² a modifikovate╛n² systΘm sledovanosti ak²chko╛vek odkazov na vaÜej strßnke.

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╛aDßtov² typPopis
idautomatickΘ ΦφsloUnikßtne Φφslo adresy internetovej strßnky.
nazovtext(50)Unikßtny prijate╛nejÜφ nßzov, ktor²m Üpecifikujeme adresu na pou₧itie.
urltext(255)Internetovß adresa, kam chceme pou₧φvate╛a posla¥.


Nßzov po╛aDßtov² typPopis
link_idautomatickΘ ΦφsloUnikßtne Φφslo adresy internetovej strßnky tabu╛ky tblClickInfo, ktorej ·daje patria.
hit_datumdatumDßtum kedy sa linka pou₧ila
hit_pocetΦφsloPoΦet prφstupov pre internetov· adresu v poli link_id poΦas dßtumu v poli dßtumu.
hit_datumdatum╚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):

<%@ Language=VBScript %>
<%
' 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≥.



Branislav Hamar (5.12. 2002)

Redakce Interval.cz |  Inzerce na Interval.cz |  Hledßme novΘ autory ISSN 1212-8651 
 ⌐ Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje prßvnφ p°edpisy o ochran∞ osobnφch ·daj∙.