• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Komische nervige Datenbankeinträge

Status
Für weitere Antworten geschlossen.

r-ene

Neues Mitglied
Hi,
auf meiner HP habe ich eine Rätselseite, auf der man seine Lösung dazu einschicken kann.
Ich speichere die Daten in meiner MySQL-Datenbank ab und kontrolliere sie. Das Problem ist nur, dass es in letzter Zeit viele Einträge gibt, die irgendwelche Urls enthalten, nicht selten auch zu irgendwelchen Pornoseiten.

***Beispiel entfernt***


Was kann ich dagegen tun. Habt ihr irgendwelche Tipps?
(Falls ihr euch das Formular der Seite angucken wollt, könnt ihr es hier sehen: Rätsel)
Ich wäre sehr dankbar für eure Hilfe und falls ich das Beispiel wegmachen sollte, dann sagt es mir!
Grüßle René
 
Zuletzt bearbeitet:
Captcha ist das mit dem Sicherheitsbild oder?
Gibt es noch andere Möglichkeiten?
(Ich habe das Beispiel vorsichtshalber gelöscht.)
 
du könntest zum beispiel angeben, dass er alle einträge die ein "http://" enthalten nicht einträgt...

also sowas wie

PHP:
if (strpos($text, 'http://') !== FALSE){
	// WIRD NICHT IN DB EINGETRAGEN;
}
else{
       //WIRD IN DB EINGETRAGEN
}
 
ich weiss zwar nicht ob das geht, aber du könntest doch einfach die antworten auf bestimmte wörter durchsuchen lassen (hier zB auf "Berliner" oder "frankfurter") :)
 
Was die anderen sagen wollen: Erstelle eine blacklist. Wenn einer der blacklist einträge irgendwo vorkommt wird der post ins nirvana geschickt!

Bei einer so kleinen seite würde es wahrscheinlich schon reichen wenn du auf eine seite weiterleitest die fragt ob der anwender ein mensch ist und dann erst den beitrag speichert. Oder du erstellt eine zufällige kombination von Zahlen und buchstaben und der user soll die zahlen eingeben. Sollte für deine zwecke alle mal spambots abhalten.
 
ich weiss zwar nicht ob das geht, aber du könntest doch einfach die antworten auf bestimmte wörter durchsuchen lassen (hier zB auf "Berliner" oder "frankfurter") :)

Nee, das geht nicht so recht. Das ist ja nicht bei jedem Rätsel möglich. Außerdem gab es auch schon Leute die Berliner mit B. und Frankfurter mit F. abgekürzt haben.

Oder du erstellt eine zufällige kombination von Zahlen und buchstaben und der user soll die zahlen eingeben. Sollte für deine zwecke alle mal spambots abhalten.

Die Lösung mit der zufälligen Zahlenkombination werd ich wohl umsetzen.
Danke für den Tipp!

Ciao René
 
boah sagmal merkt ihr nochwas? oO
antwort durchsuchen, wörter sperren... noch schwerer gehts nicht, oder ? :)
Du erstellst einfach mit
PHP:
rand();
eine Zahl zwischen 0 - 1000000.
Die Zahl setzen wir einfach in $code.

Dann setzt du diese Zahl in ein Hidden Feld und nennst es einfach codecheck. Dann machst du noch ein Feld (das sichtbar ist), das nennst du codeeingabe. Dort muss dann $code eingegeben werden.
Neben dem Feld mit codeeingabe musst du natürlich eine Ausgabe von $code machen. Damit der User auch sieht was er in codeeingabe eingeben muss.

So wenn das Feld empty(); ist, dann gibst du einen fehler zurück, oder wenn das feld nicht mit dem $code übereinstimmt.
Mach es dir hier mal schnell....
PHP:
<?php
// Daten checken
if(!$_POST["codeeingabe"]==$_POSST["codecheck"] or empty($_POST["codeeingabe"]) { 
//Fehler ausgeben 
print 'Das ist ein fehler'; } else {
// Alle Daten okay, und eintragen 
mysq_query($ergebnis); }

hoffe ich konnte helfen :)
wenn noch fragen sind, dann einfach fragen!
 
1.
rand(); erzeugt viel schlechtere Zufallszahlen als mt_rand();
2.
http://www.drweb.de/webmaster/sichere-formulare-captcha.shtml
Hilft.
Wenn du dich dann fragst, wie du die Zahl prüfen willst, hier sind ein paar Lösungsansätze für dich:
  1. Du übergibst die Zahl per Session
  2. Du führst mehrere Rechenoperationen durch, um ein Ergebnis zu erhalten, das nicht annähernd nach der Zahl aussieht. Dann packst du diese in ein Hiddenfeld, und machst ein sichtbares Feld wo der Code eingegeben werden muss. Auf der nächsten Seite führst du nun die gleichen Rechenoperationen mit dem sichtbaren Feld durch, und prüfst ob das Ergebnis mit dem Hidden Feld übereinstimmt.
 
jo da hast du recht.. aber es war nur ein beispiel..
er kann es ja nutzen wie er will... ich hätte es so gemacht:
PHP:
<?php
                                ## Code genieren
                                $zahl1=rand(0,24);
$zahl2=rand(0,24);
$zahl3=rand(0,24);
$zahl4=rand(0,24);
$zahl5=rand(0,24);

$code=$zahl1;
$code.=$zahl2;
$code.=$zahl3;
$code.=$zahl4;
$code.=$zahl5;
echo $code;
                                
                                ?>
 
Haha geil das is echt genial! :D
Das muss ich mir merken :D

PHP:
<?php

for($i=0;$i<=8;$i++)
{
	$code .= mt_rand(0, 9);
}

echo $code;

?>

EDIT
Noch sicherer wärs natürlich noch mit buchstaben:

PHP:
<?php

for($i=0;$i<=3;$i++)
{
	if(mt_rand(0, 1) == "1")
	{
		$code .= chr(mt_rand(97, 122));
	}

	else
	{
		$code .= mt_rand(0, 9);
	}
}

echo $code;

?>
Dann würde ich allerdings empfehlen mit einem regulärem ausdruck zu prüfen, ob der code wirklich buchstaben und zahlen enthält.
 
Zuletzt bearbeitet:
Eine einfache und, wie ich finde, sehr elegante Methode ist folgende:

Man erzeugt ein Eingabefeld (_nicht_ vom Typ hidden) und blendet es über css aus. Die css definitionen sollten aber unbedingt in einer externen Datei liegen und nicht direkt im Attribut style gesetzt werden. Ein einfaches
Code:
display:none;
genügt.
Nun gibt man diesem Feld einen klangvollen Namen, der verheisst, das es wichtig ist. Namen wie email, message, url, ... sind hier nicht schlecht.
Die Programme, welche Formulare auf Internetseiten ausfüllen, sind immer bedacht möglichst viele Felder auszufüllen und werden also auch unser angelegtes Feld mit dem verführerischen Namen nicht auslassen.
Wenn das Formular nun gesendet wird, prüfen wir ob das Feld leer ist, wenn nicht kann man sich ziemlich sicher sein, das kein Mensch das Feld ausgefüllt hat sondern ein Programm.
Ich habe mit dieser Methode mehrere Formulare schon seit geraumer Zeit gesichert und bis jetzt ist kein einziger schlechter Eintrag mehr angekommen.
 
Huhu,
danke für eure ganzen Antworten. In dem Forum wird einem ja gern geholfen. :grin:
morl, von deiner Idee bin ich doch ziemlich begeistert. Eigentlich ganz simpel. Stimmt schon, es werden bei solchen Einträgen immer alle Felder ausgefüllt!
Ob es klappt werde ich jetzt sehen, hab ebendgrad ein mit CSS unsichtbar-gemachtes Eingabefeld eingefügt. Hoffe es funktioniert.
Danke auch nochmal an alle anderen für eure Tipps!
Gruß René
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben