Avatar billede jamal_s Nybegynder
24. juli 2001 - 13:19 Der er 47 kommentarer og
4 løsninger

forhindre ?

hvordan kan jeg forhindre at brugeren ik trykke på hans link 100 gange og får 100 hits...

håber du er med på hvad jeg mener ;o) kan jeg måske gemme hans ip nr. i min database, så den tæller kun engang ?

Avatar billede tdaugaard Nybegynder
24. juli 2001 - 13:32 #1
Opret en tabel:

CREATE TABLE clicks (id INT(6) NOT NULL auto_increment, sessionid INT(11), linkid INT(6), PRIMARY KEY(id));

1. Når siden loades checker du om der i en cookie findes et sessionid, hvis ikke sætter du Response.Cookies(\"sessid\") = Session.SessionID

2. Du checker i DB\'en:

sql = \"SELECT id FROM clicks WHERE sessionid=\" & Request.Cookies(\"sessid\") & \" AND linkid=\" & id\'et_på_linket

If Rs.BOF Then
  opdater_din_hits_tabel
  sql = \"INSERT INTO clicks (sessionid,linkid) VALUES (\" & Request.Cookies(\"sessid\") & \",\" & linkid 6 \");\"
end if
Avatar billede oswald Nybegynder
24. juli 2001 - 13:43 #2
So we meet again ;)

En QUICK AND DIRTY.
Du kan lave en mellemside som bliver kaldt med en parameter og redirecter til den side brugeren har kilkket på.

Mellemsiden laver så noget i stilen med
if instr(1,session(\"RedirectedPages\"),URL) > 0 then response.redirect (\"www.whereever.com\")
session(\"RedirectedPages\")=session(\"RedirectedPages\") & URL
response.redirect URL

Du kan også lave en mellemting mellem denne og tdaugaard\'s svar.
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 13:48 #3
Den som jeg har lavet er faktisk den sikreste ... jeg bruger den selv ...
Avatar billede oswald Nybegynder
24. juli 2001 - 13:56 #4
tdaugaard:> Og den mest elegante, indrømmet. Men du skal huske at SessionID ikke er unikt, så det ville være bedre at bruge en anden counter.
Jeg går ud fra at du vil kører din kode på en mellemside.
Avatar billede runesoft Nybegynder
24. juli 2001 - 13:56 #5
tdaugaard...  Hvor kigger du overhovedet i databasen?  Det gælder jo kun så længe sessionen er aktiv?
hvorfor ikke bare

if session(\"hitcount\") =\"\" then
session(\"\")=1
opdater dine hits
end if
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 13:59 #6
oswald:> SessionID er en unik Long for hver session, jo.

runesoft, nej det gør ej. Det er til at forhindre at en bruger klikker på et link 100 gange .. og de links kan der være mange af jo ..
Avatar billede oswald Nybegynder
24. juli 2001 - 13:59 #7
runesoft:> Jeg går ud fra at der er flere links der skal holdes øje med, så derfor går den vist ikke.
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 14:00 #8
oswald:> men nej, jeg kører ikke igennem en mellemside.
Avatar billede oswald Nybegynder
24. juli 2001 - 14:01 #9
tdaugaard:> sådan er det officielt, men en bug i iss\'en gør at den counter der bruges til SessionID først bliver opdateret når sessionen timer ud. Jeg har selv haft det problem med et statestik system.
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 14:02 #10
oswald:> hmm .. jeg har ingen problemer med den metode på mit Hot or Not system på tdaugaard.place.nu ..
Avatar billede oswald Nybegynder
24. juli 2001 - 14:03 #11
tdaugaard:> Men så må du reloade siden hver gang du klikker på linket? eller har jeg misforstået problemet?
Avatar billede runesoft Nybegynder
24. juli 2001 - 14:03 #12
hvad med

set links= session(\"links\")
if links=\"\" then
set links= createObject(\"scripting.dictionary\")
end if
if not links.exist(linkid) then
links.add linkid, 1
end if
set session(\"links\")
Avatar billede runesoft Nybegynder
24. juli 2001 - 14:05 #13
jeg havde selvfølgelig glemt at tælle hittet op.

set links= session(\"links\")
if links=\"\" then
set links= createObject(\"scripting.dictionary\")
end if
if not links.exist(linkid) then
links.add linkid, 1
\'tæl hit op her
end if
set session(\"links\")
Avatar billede oswald Nybegynder
24. juli 2001 - 14:05 #14
runesoft:> er det ikke bare en avanceret udgave af INSTR løsningen?

tdaugaard:> Får du desuden ikke en tabel der vokser mod det uendelige?
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 14:06 #15
oswald:> hmm .. altså, når der klikkes på linket så går det til en side som f.eks.:

out.asp?id=135

(135 er link id)

i denne fil checkes der for det jeg lige skrev som svar, og der redirectes til URL\'en
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 14:07 #16
oswald:> det har du helt ret i, jo .. den bliver ret så stor i løbet af ingen tid... men det er den eneste måde at lave det ordentligt på :-(
Avatar billede runesoft Nybegynder
24. juli 2001 - 14:09 #17
Nej, der er også min metode
Avatar billede jamal_s Nybegynder
24. juli 2001 - 14:09 #18
wow..skal lige læse alt igennem :o)
Avatar billede oswald Nybegynder
24. juli 2001 - 14:10 #19
tdaugaard:> Jeps. Et godt kompromi :)
Jeg ville måske tilføje en lille komando der fjernede alle oplysninger om sessionen fra databasen når sessionen timede ud og en funktion der fjernede data om alle sessions når webserveren genstartede.
Avatar billede oswald Nybegynder
24. juli 2001 - 14:11 #20
oswald:> Det vil forhindre tabellen i at løbe løbst. (kommentar til mig selv)
Avatar billede oswald Nybegynder
24. juli 2001 - 14:14 #21
jamal_s:> skal vi opsumerer? ;)
Avatar billede runesoft Nybegynder
24. juli 2001 - 14:15 #22
Hvorfor vil i absolut have sessionsoplysningerne ind i en tabel i databasen. Hold dog dog sessions oplysningerne i sessionsvariable. Det må sgu være hurtigere at rode lidt med et dictionary end det er at lave et ekstra kald i databasen.
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 14:15 #23
oswald:> se det er her \"problemet\" ligger. Grunden til at jeg gemmer ID\'et i en cookie er jo netop at de vil beholde deres \"gamle\" SessionID hver gang de besøger siden og på den måde kan jeg checke om de har besøgt en side, et link or so før.

Så hvis jeg tømmer tabellen once in a while så vil det se ud som om at de ikke har stemt f.eks. som det er i mit tilfælde.
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 14:16 #24
runesoft:> Dictionary kan du ikke gemme og bruge i morgen, vel !? såååe. .
Avatar billede runesoft Nybegynder
24. juli 2001 - 14:18 #25
hey, hey.  Nu begynder i at rode med funktionaliteten i scriptet.

Det kan selvfølgeligt godt være at det er det er meningen, men så får man jo ikke et hit fra en der kommer ind igen lidt senere på siden. Det kan da ikke have sin rigtighed
Avatar billede jamal_s Nybegynder
24. juli 2001 - 14:21 #26
tdaugaard > er det den her fil du bruger out_img.asp ?? sådan når folk skal stemme ?
Avatar billede runesoft Nybegynder
24. juli 2001 - 14:22 #27
det kommer an på hvad jamal_s skal bruge sin hitcount til, men der bliver ikke så meget man kan konkludere statistisk udfra det hitcount man får. Andet end hvor mange unikke brugere der nogensinde har været på sitet. (og der er en unøjagtighed når brugerne sidder ved andre maskiner)
Avatar billede oswald Nybegynder
24. juli 2001 - 14:22 #28
tdaugaard:> du har ret, den anden løsning vil betyde at de kunne stemme forfra hver gang de fik et nyt SessionID. Men desværre forhindre en cookie ikke \'ondsindede\' personer i at stemme flere gange, den gør det bare mere besværligt. ;)

forøvrigt
jamal_s:> Et ip nummer identificerer ikke nødvendigvis en specifik maskine, da proxy servere og visse firewall\'s giver alle udgående kald samme ip nummer.
Avatar billede runesoft Nybegynder
24. juli 2001 - 14:22 #29
det var til :Kommentar fra tdaugaard 
24/07 2001 14:16:53 
Avatar billede jamal_s Nybegynder
24. juli 2001 - 14:25 #30
ok, nu er ik prof. til asp, så jeg er ik helt med på hvad i mener,

1. jeg har oprette out felt i databasen,  når bruger trykke på link så tager den ham til:

out.asp?id=132

2. out.asp > som jeg har forstået at jeg skal lave sådan at den gemmer cookies på hans computer, og i databasen + ip adresse ??

3. i out.asp skal den tjekke om brugeren har den samme ip som findes i databasen, eller har cookies til den id i på computer ?
Avatar billede jamal_s Nybegynder
24. juli 2001 - 14:26 #31
oswald > det er sku rigtige nok, det med ip....

men der må sku findes noget man kan gøre i asp ??

chart.dk > hvordan har de mon gjordt det ?
Avatar billede oswald Nybegynder
24. juli 2001 - 14:26 #32
Jeg har lige snakket analogt med Rune (runesoft), og han har forstået spørgsmålet på en anden måde. Kan vi ikke lige få beskrevet hvad kravspekken til funktionen helt nøjaktigt er?
Avatar billede oswald Nybegynder
24. juli 2001 - 14:28 #33
jamal_s:> kender dem ikke, men dette site har ikke gjordt det godt nok. (Jeg bliver ved med at skulle logge ind selv om jeg beder sitet om at huske mig) ;)
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 14:28 #34
runesoft:> smid et DATETIME felt på, check med DateDiff() om der f.eks. er gået en time, if so, opdater recorden med now() og tæl et hit mere. Hvis ikke lav intet.

oswald:> det ved jeg, men det er risikoen. Der er ingen måde hvorpå du kan sikre dig 100% at brugeren kun kan stemme een gang.

jamal_s:> damn .. jeg opgiver ..
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 14:29 #35
jamal_s:> Chart.dk gør det på denne her måde som jeg har skrevet. Det KAN ikke gøres på andre måder.
Avatar billede oswald Nybegynder
24. juli 2001 - 14:31 #36
jamal_s:> Sådan som jeg ser det fundamentale problem er det at du vil have et anonymt site, hvor du vil gemme information om brugeren. Så det er et Logisk problem ikke er praktisk ;). Har du overvejet at lade folk logge ind?
Avatar billede jamal_s Nybegynder
24. juli 2001 - 14:32 #37
tdaugaard > opgiver...jeg tror jeg tager en kursus indenfor ASP, 1500 kr. I will be back !! :0)

er det dyrt ?
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 14:34 #38
jamal_s:> 1.500 kr. .. hmm .. kommer an på  hvad der bliver gennemgået .. men eller, nej
Avatar billede runesoft Nybegynder
24. juli 2001 - 14:35 #39
opgiv ikke... der er da lagt nogle gode forslag på bordet. Det er jo kun nogle funktionalitetsdetaljer der bliver diskuteret.  PRØV DEM!
Avatar billede oswald Nybegynder
24. juli 2001 - 14:36 #40
Jeg stemmer ;) for følgende løsning.

når der klikkes på et link bliver siden out.asp kaldt med et Link ID.
Out.asp tjekker om der findes en cookie(\"sessid\") og hvis ikke så laves den med et fortløbende nummer.
databasen opdateres hvis den pågældende sessid ikke allerede har været der
out.asp redirecter til linken.

Det er vist den nemmeste og sikreste løsning.
Avatar billede oswald Nybegynder
24. juli 2001 - 14:43 #41
jamal_s:> Hvis det er dig selv der betaler så er det for dyrt. Køb en god bog og spar differancen.
Desuden er dette problem ikke så meget ASP relateret, men mere gennerelt programmerings teknisk og det er noget der kommer med tiden.
Er i ikke enige tdaugaard og runesoft?
fortvivl ikke, der er kommet mange godt forslag, tyg på dem og så vend tilbage :)
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 14:46 #42
oswald:> hmm .. jeg tror et ASP, SQL og programmerings teknik kursus ville gøre underværker her ;o)
Avatar billede oswald Nybegynder
24. juli 2001 - 14:51 #43
tdaugaard:> Ja det kan være ;), men et par års blod, sved og tåre bag skærmen gør også underværker. Det lyder i det hele taget som om det er en større mundfuld.
Avatar billede runesoft Nybegynder
24. juli 2001 - 14:55 #44
Jeg kan varmt anbefale at snuse lidt rundt på eksperten. Og se hvad folk har lavet. Til ASP kan jeg ikke forestille mig at et kursus kan gøre nogen nytte, så vil jeg foretrække en god bog. Med SQL og programmerings teknik (og her er det jo faktisk ikke programmeringsteknik, men mere web teknik), tror jeg at kurserne vil gøre godt:-)
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 14:56 #45
oswald:> Jow deet...
Avatar billede jamal_s Nybegynder
24. juli 2001 - 17:39 #46
hvilken bog ??
Avatar billede jamal_s Nybegynder
24. juli 2001 - 17:45 #47
oswald > hvilken bog synes du, man får meget ud af ?

tdaugaard > why ? :)
Avatar billede tdaugaard Nybegynder
24. juli 2001 - 17:48 #48
jamal_s:> why what ?
Avatar billede jamal_s Nybegynder
24. juli 2001 - 17:59 #49
tdaugaard > glem det :) kom til at skrive noget som jeg ik skulle skrive, men kender du en god bog ? jeg kan købe istedet at betale 1500 kr !
Avatar billede jamal_s Nybegynder
08. oktober 2001 - 17:10 #50
nå ?
Avatar billede jamal_s Nybegynder
21. januar 2002 - 22:45 #51
tak for de mange forslag :) *s* nu er det tid til at lukke...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester