Avatar billede b.a.s. Nybegynder
31. maj 2002 - 00:10 Der er 13 kommentarer og
1 løsning

Stop spam

Er der en måde hvorpå det er muligt at få lavet et script der gør at formen kun henter matchende tekst en gang, så folk der har postet en besked allerede posted ikke bliver posted?
Avatar billede eagleeye Praktikant
31. maj 2002 - 00:12 #1
du ken lave et tjek i stil med:

SQL = "SELECT * FROM beskeder WHERE besked = '" & request.form("ny_besked") & "'"
set rs= connection.execute(SQL)
if rs.EOF then
  'indsæt nye data
else
  Response.write "DBesked alderrede i databasen"
end if
Avatar billede b.a.s. Nybegynder
31. maj 2002 - 00:17 #2
Men gør den ikke bare sådan at den spammer med "DBesked alderrede i databasen" på forsiden, hvis der har været gentaget beskeder?
Avatar billede b.a.s. Nybegynder
31. maj 2002 - 00:18 #3
Skal den ikke sættes ind i den her?:

<%

Const adOpenKeyset = 1
Const adLockOptimistic = 3

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("guestbook.mdb")

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From guestbook"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

      rs.AddNew
      rs("overskrift") = Request.form("overskrift")
      rs("Besked") = Request.form("Besked")
      rs("Navn") = Request.form("Navn")
      rs("Dato") = Now
      rs("email") = Request.form("link")
      rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing

%>
Avatar billede eagleeye Praktikant
31. maj 2002 - 00:18 #4
jo det er rigtig .. det var også bare et eks du kan bare fjerne else delen.

SQL = "SELECT * FROM beskeder WHERE besked = '" & request.form("ny_besked") & "'"
set rs= connection.execute(SQL)
if rs.EOF then
  'indsæt nye data
end if
Avatar billede b.a.s. Nybegynder
31. maj 2002 - 00:19 #5
Eller er det muligt at gøre sådan man ikke kan trykke "tilbage"?
Avatar billede eagleeye Praktikant
31. maj 2002 - 00:21 #6
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("guestbook.mdb")
Set rs = Server.CreateObject("ADODB.RecordSet")

SQL = "SELECT * FROM guestbook WHERE besked = '" & replace(request.form("besked"),"'","''") & "'"
set rs= connection.execute(SQL)
if rs.EOF then
    strSQL = "Select * From guestbook"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

      rs.AddNew
      rs("overskrift") = Request.form("overskrift")
      rs("Besked") = Request.form("Besked")
      rs("Navn") = Request.form("Navn")
      rs("Dato") = Now
      rs("email") = Request.form("link")
      rs.Update

    rs.Close
    Set rs = Nothing
end if

Conn.Close
Avatar billede eagleeye Praktikant
31. maj 2002 - 00:23 #7
Fjerne tilbage knappen prøv at kikke på dette:
http://www.4guysfromrolla.com/webtech/111500-1.2.shtml
Avatar billede b.a.s. Nybegynder
31. maj 2002 - 00:32 #8
JEg må sq sige det link er gud.. Mange tak skal du ha' og point til dig ;)
Avatar billede tmceu Praktikant
31. maj 2002 - 00:42 #9
Du kunne vel principielt også lade beskeden indgå i din primære nøgle/oprette et index med duplicate = no. Så kan du i alle tilfælde bare forsøge at indsætte posten og hvis den findes, vil databaseoperationen bare fejle (så kan du evt. tilføje et check for fejlkoden).

Hvis vi antager at spam er en undtagelse, vil det sandsynligvis give en bedre performance, end at spørge hver gang i databasen om en bestemt besked findes, inden den indsættes.

Ovenstående link forhindrer mig ikke i, at kigge i kilden på din formular side og lave min egen lille formular, der poster til din submit side i en lind strøm. Dette kunne så forhindres ved et check på request.servervariables("HTTP_REFERER")
Avatar billede b.a.s. Nybegynder
31. maj 2002 - 00:57 #10
k, noget du vil hjælpe videre med? ;D
Har en ondsindet fyr der elsker at provokere mig.
Avatar billede tmceu Praktikant
31. maj 2002 - 01:00 #11
Prøver ellers at undgå Access databaser, men ok :-)
Avatar billede b.a.s. Nybegynder
31. maj 2002 - 01:04 #12
Eeh.. Hvilke alternativer er der så? (bortset fra en textfil?)
Avatar billede tmceu Praktikant
31. maj 2002 - 01:18 #13
Kommer an på dit webhotel (jeg antager at din side er hostet :-). Men de åbentlyse alternativer er MySQL og SQL Server. De fleste webhoteller tilbyder én af disse eller begge mod merbetaling. Hos nogle er denne merbetaling et oprettelsesgebyr på omkring 100.- hos andre en horribel månedlig pris.

Hos www.buydomains.dk er det endda standard på alle hoteller og så er de gode, generelt billige og ikke mindst stabile.
Avatar billede b.a.s. Nybegynder
31. maj 2002 - 01:29 #14
Well, mit webhotel er 100% gratis, men deres SQl (eller MySQL(aner ikke forskel)) kommer først til at virke om et stykke tid.
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