Avatar billede lund_dk Praktikant
15. december 2003 - 18:22 Der er 11 kommentarer og
1 løsning

Datediff - tjekke tid for at undgå spam

Jeg har neden stående  til at tilføje i databasen
Skal bare lige ha gjort sådan, at den går ind og tjekker navn og dato. For det skal være sådan man kun med 1 times mellemrum kan tilføje i databasen..

Nogen som kan hjælpe lidt, med at fortælle hvordan jeg går ind og tjekker at USERNAME ikke har tilføjet indenfor den sidste time?



    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From tabel"
    rs.Open strSQL, Conn, 1, 3
   
      rs.AddNew
      rs("username") = Server.HTMLEncode(Request("username"))
      rs("sodavand") = Server.HTMLEncode(Request("sodavand"))
      rs("Dato") = Now()
      rs("Ip") = Request.ServerVariables("REMOTE_ADDR")
      rs.Update
Avatar billede lund_dk Praktikant
15. december 2003 - 18:24 #1
Forresten, så må det ikke være sådan at jeg ligger en cookie på PCen, eller session.
Avatar billede thesurfer Nybegynder
15. december 2003 - 18:27 #2
Du kunne evt kigge lidt på DateDiff funtionen:
http://www.w3schools.com/vbscript/func_datediff.asp
Avatar billede lund_dk Praktikant
15. december 2003 - 18:40 #3
ganske fint..
men da det er forholdsvis nyt område jeg er inde på, kunne jeg godt bruge en smule mere hints til hvordan jeg griber det an :/
Avatar billede thesurfer Nybegynder
15. december 2003 - 19:17 #4
hmm.. kan ikke helt få det til at virke.. :)
arbejder videre på det..
Avatar billede lund_dk Praktikant
15. december 2003 - 19:29 #5
Jeg har fundet en anden løsning ..

nu har jeg
<%
dage = dateDiff("n", session("spam"), Now() )
%>
hvordan trækker jeg min session fra now ?
Jeg skal have den til at tælle ned
Avatar billede lund_dk Praktikant
15. december 2003 - 19:34 #6
Hov, sikke noget sludder .. heeh

Jeg skal have den til at trække session fra 60

Altså.. den skal tælle hvor mange minutter der er tilbage fra 60.. forstå ? *G*
Avatar billede thesurfer Nybegynder
15. december 2003 - 20:03 #7
hmm.. du gemmer tiden timerne i en variabel  der hedder "dage"?
Prøv: dage = dateDiff("n", 60 - session("spam"), Now() )
Avatar billede eagleeye Praktikant
15. december 2003 - 20:32 #8
Inden du kommer vidre med session løsningen bør du vide at en session variable er det samme som en cookie og man kan slå session cookies fra som man slår cookies fra. Samt session cookies forsvinder så snart IE lukkes eller den timer ud efter 10-15 minutter (default).


Det du skal gøre er at lave en SQL sætning som tjekker om en bruger har postet noget inden for den sidste time i databasen som du først har lagt op til:

SQL = "SELECT * FROM tabel WHERE DateAdd('n',1,dato) > Now() AND username = '" & Server.HTMLEncode(Request("username")) & "'"
Set rs = Conn.Execute (SQL)
if rs.EOF then
  'Indsæt i DATABASEN eks med sql
  SQL = "INSERT INTO tabel (username,sodavand,dato) VALUES ("
  SQL = SQL & "'" & Server.HTMLEncode(Request("username")) & "', "
  SQL = SQL & "'" & Server.HTMLEncode(Request("sodavand")) & "', "
  SQL = SQL & "Now()"
  SQL = SQL & ")"
  Conn.Execute(SQL)
else
  'Du må ikke skrive endnu.
end if



kolonnen dato skal være af typen Date/Time (Dato/Klokkeslet)
Avatar billede thesurfer Nybegynder
15. december 2003 - 20:32 #9
..men hvad står der i session? også hvilket format?
Avatar billede lund_dk Praktikant
16. december 2003 - 12:29 #10
eagleeye > Det prøver jeg lige senere .. for som du skriver, så er session ikke en hel holdbar måde at gøre det, da man kan hoppe udenom..
Avatar billede lund_dk Praktikant
21. januar 2004 - 18:29 #11
eagleeye > du må gerne komme med et svar så jeg kan lukke
Avatar billede eagleeye Praktikant
21. januar 2004 - 18:47 #12
Ja det gør jeg da gerne ;)
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