SPAMS im Gästebuch - was tun?

Hi

Du kannst über die Formularvalidierung z.B. eine "Rechenaufgabe" zur Verfügung stellen, die der User ausrechnen muss.

Dies macht man wie folgt:

Man berechnet 2 Zufallswerte, 1. Wert 1-99, 2. Wert 1-9. Diese Werte bzw. Berechnung speichert man in Sessions. Der Wert des Formularfelds wird dann mit der Berechnung verglichen, d.h. der User muss die Addition dann in das Formularfeld einfügen. Wird die falsche Berechnung erstellt oder das Feld bleibt leer, kann das Formular nicht abgeschickt werden.
 
Zuletzt bearbeitet:
Hi

klar kannst Du das löschen.

Aber in der Regel sausen da irgendwelche Sucher (Robots) durch, die Dir direkt eine n-Zahl ein Spam-Einträgen liefern. Da wird das Löschen schon mal zum Albtraum. :D

Die können zwar Formularfelder füllen, aber keinen Rechenaufgaben lösen. :)
 
Zuletzt bearbeitet:
Hi Luzie,
danke für den guten Tipp - abe rich hab keine Ahnung, wie ich das anstellen kann.... würdest mir evtl. dabei helfen, wie ich den Code von meiner ASP-Seite adaptieren muss?
Liebe Grüsse, redwing78
 
Hallo,

ich hatte das Problem kürzlich auch (allerdings mit einen PHP-Gästebuch, aber die Vorgehensweise ist diegleiche).

Ich habe dann mein Gästebuch einfach in ein moderiertes Gästebuch umgewandelt. Das heißt, ich habe in der Datenbank eine Flag "Freigeschaltet" gesetzt, die standardmäßig erst einmal "0" ist. Nur wenn ich manuell einen Gästebuch-Eintrag freischalte, wird sie auf "1" gesetzt und der Beitrag erscheint im Gästebuch.

Die Spammer können nun zwar weiter posten, aber es wird Ihnen nicht viel nützen, da die Einträge nicht mehr erscheinen.

viele Grüße
Jan
 
Hallo,

ich hatte das Problem kürzlich auch (allerdings mit einen PHP-Gästebuch, aber die Vorgehensweise ist diegleiche).

Ich habe dann mein Gästebuch einfach in ein moderiertes Gästebuch umgewandelt. Das heißt, ich habe in der Datenbank eine Flag "Freigeschaltet" gesetzt, die standardmäßig erst einmal "0" ist. Nur wenn ich manuell einen Gästebuch-Eintrag freischalte, wird sie auf "1" gesetzt und der Beitrag erscheint im Gästebuch.

Die Spammer können nun zwar weiter posten, aber es wird Ihnen nicht viel nützen, da die Einträge nicht mehr erscheinen.

viele Grüße
Jan

Hi

das ist auch eine Lösung, hat aber zum Ergebnis, dass Du hier ständig aktiv sein musst. Ich habe in einem Weblog eine ganze zeitlang rd. 100 Einträge pro Nacht bekommen. Das macht einfach keinen Spaß mehr. Ich habs dann abgestellt und überarbeitet (Captcha, IP-Sperre für einen Zeitraum). Und nu ist Ruhe :D
 
Hi

eine Rechenaufgabe zu programmieren ist nicht schwer. ASP/vbscript kennt auch Rechenoperatoren wie + - * und /.

Man muss es einfach mal als ganzes sehen.
Hier ein Beispiel zum Testen

Code:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% option explicit

' --- Sessions erstellen und Wert festlegen

function wert(z1,z2)
RANDOMIZE(TIME())
dim u : u = z1
dim o : o = z2
wert = INT( (o-u +1) * RND()+u)
end function

' --- Session mit Werte befüllen

if session("z1") = "" then session("z1") = wert(10,99)
if session("z2") = "" then session("z2") = wert(1,9)

' --- Per "Zufall" entscheiden, ob Summe oder Subtration

dim zZahl1, y
zZahl1 = session("z1") + session("z2")
y = " und "
if session("z2") >= 5 then 
zZahl1 = session("z1") - session("z2")
y = " minus "
end if

' --- Aufruf definieren

dim zZahl
	zZahl = "Was ist das Ergebnis von " & _
	session("z1") & y & session("z2") & "?<br><br>"

dim ausgabe
	ausgabe = "Bitte folgende Felder * ausfüllen"
	
' --- Ist das Formular abgeschickt	

if Request.Form.count > 0 then

dim zahl
    zahl = Request.form("zahl")
	
' --- Überprüfungsvariablen den Wert ok bzw. 1 geben	

dim allesok    
	allesok = 1
	
' --- ist Feldwert ungleich des Sessionergebnisses, ist der Eintrag falsch	

if cstr(zahl) <> cstr(zZahl1) then 
	allesok = 0
	Ausgabe = "<span style=""color:red"">Was ist das Ergebnis?</span>"
	end if
end if

' --- Ist der Feldwert korrekt eingegeben, können die Formularergebnisse weiterverarbeitet werden

if allesok then
	Response.write "alles ok"
	session.contents.remove("z2")
	session.contents.remove("z1")
	
' --- Optional.. nur zum Testen, Neustart der Seite
	
	Response.write "<br><a href=""" & Request.ServerVariables("SCRIPT_NAME") & """>start</a>"
else

' --- Start des Formulars
	Response.write ausgabe
	call formular
end if 

sub formular
%>
<form method="post" action="<% = Request.ServerVariables("SCRIPT_NAME")%>">
<div><% = zZahl %></div>
<input type="text" name="zahl" value="<% = zahl %>"/><br />
<input type="submit" name="Submit" value="Senden" id="Submit">
</form>
<% end sub %>
 
Zuletzt bearbeitet:
Hi! Danke für den Code, habe ihn schon eingebaut.
Erhalte aber seltsamerweise einen Fehler:

Laufzeitfehler in Microsoft VBScript- Fehler '800a01f4'

Variable ist nicht definiert: 'RS'

/fcreith/gaestebuch.asp, line 114

Oberhalb dieses Fehlers wird angezeigt "Bitte folgende Felder ausfüllen",
danach ein Eingabefeld und "Senden"-Button.

Wieso werden auf einmal RS-Recordsets nicht mehr erkannt?
LG redwing78
http://www.fckitz.at/fcreith/gaestebuch2.asp
 
Zuletzt bearbeitet:
Zurück