Avatar billede kalaharikid Nybegynder
22. september 2004 - 11:45 Der er 8 kommentarer og
1 løsning

begræns tilmelding konkurrence til 1 gang om dagen

Jeg skal lave en tilmeld-til-konkurrence funktion i asp hvor brugeren skal svare på 1 spørgsmål : Hvis de svarer korrekt skal navn, adresse, email + svaret lagres (i en access db) ...ellers skal de have en besked om at de har svaret forkert - nu kommer så spørgsmålet : Hver bruger må KUN svare 1 gang om dagen ... så datoen for svaret skal gemmes og checkes op mod f.eks. emailadressen ....så samme bruger ikke kan svare 100 gange samme dag ...hvordan skal asp-koden se ud ?

MVH Kalaharikid
Avatar billede kalaharikid Nybegynder
22. september 2004 - 11:50 #1
(primært if-sætningen med check på dato og evt. redirect)
Avatar billede webbe Nybegynder
22. september 2004 - 14:01 #2
vil foreslå dig at anvende en cookie som du så lader udløbe 24 timer efter at den bliver sat.

så tjekker du op på om cookien eksisterer

if request.cookie("my_cookie") then
  response.redirect("my_file.asp")
else
  gør noget andet
end if
Avatar billede kalaharikid Nybegynder
22. september 2004 - 14:12 #3
bliver cookien fjernet efter de 24 timer ?
Avatar billede webbe Nybegynder
22. september 2004 - 14:20 #4
når du opretter en cookie hos en bruger har den en udløbstid - det vil sige et bestemt antal minutter, timer, dage m.m. som den vil eksistere hos brugeren - i det her tilfælde 24 timer.
cookien (der jo er en tekstfil) vil automatisk få et tidsstempel (fx. 22-10-2004, kl. 14.19.24). Brugerens computer vil så selv løbende tjekke hvilke cookies der er udløbet og fjerne dem der er udløbet.

når brugeren fx. 20 timer efter deltagelse konkurrencen tænder for sin computer vil cookien stadig eksistere, indtil der er gået 4 timer yderligere.
Avatar billede eagleeye Praktikant
22. september 2004 - 15:24 #5
Umiddelbart ville den bedste måde være altid at gemme e-mail og dato også selvom der er svaret forkert, så gem status for om svaret er rigtigt/forkert. Cookies kan nemt slettes og derved får man adgang til et nyt forsøg.

IP logging, er en anden medtode, så en IP adresse kun kan svare inden for en dag. Ulempen er at nogle ar dynamisk IP så ved at logge af og på igen kan de forsøge igen. Samt flere der sidder bag samme fireware har samme IP selvom det er flere forskellige PCer.
Avatar billede kalaharikid Nybegynder
22. september 2004 - 17:31 #6
tak for input ... jeg tror jeg holder på dato-checket ... hvordan ville koden se ud :

if (Now) = rs("dato") + (hvad?)then ?
Avatar billede eagleeye Praktikant
22. september 2004 - 17:45 #7
Ja hvis du gemme now i databasen så kan du tjekke inden nu gemmer de nye gæt om der findes et gæt forvejen:

sql "select * from tabel where dato >= dateadd('d',-1,now()) and email = '" & email & "'"
set rs=Conn.Execute(sql)
if rs.EOF then
  'indsæt gæt
  sql = "insert into (dato,email,...) values(Now(),'" & email & "',...)"
  conn.Execute(sql=
  Response.Write "Tak for dit gæt
else
  Response.Write "Du har gætte før i dag, du må først gætte igen i morgen"
end if
Avatar billede kalaharikid Nybegynder
22. september 2004 - 21:51 #8
tak for hjælpen, webbe og eagleeye... jeg har brugt din kode, eagleeye, smid et svar, så giver jeg point ....det er som altid ikke bare svar på et spørgsmål men flere man får her på eksperten. Genialt at bruge EOF på den måde. Fedt også at få argumenterne omkring cookies og IP logging. Smid svar begge to så giver jeg også gerne nogle point til dig, webbe. Det du skrev kan jeg bruge i noget andet jeg sidder og fidler med ;-)
Avatar billede eagleeye Praktikant
22. september 2004 - 22:00 #9
Ok :) Her et svar fra mig.
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