Ich hatte damals ja schon das Rechen Captcha bei meinem Forum eingebaut, wo mir der Admin geholfen hatte und mir das Script angepasst hatte.
Jetzt will ich es in mein selbst gebasteletes Kommentar Script einbauen.
Leider kommt immer wieder der Fehler, dass das eingegebene Captcha Ergebnis falsch sei.
Begutachten kann man alles unter http://luksch.freeprojekt.de/direct_acc ... ?news_ID=3
Man füllt das Formular unten aus und klickt absenden. Darauf werden alle Daten per "POST" an eine Datei geschickt, wo PHP alles auswertet und zur Datei zurück leitet. Dies ist für mich notwendig, damit ich alle PHP Auswertungen in einer Datei hab, da ich noch einige Funktionen hab, die ausgewertet werden müssen (tut jetzt allerdings nichts zur Sache
Die "direct_access.php" (Ausschnitt, der Rest dürfte nicht relevant sein):
- Code: Alles auswählen
<tr>
<td align="left" valign="top"><img src="rechen-captcha.php" alt="" border="0" /></td>
<td align="left" valign="top"><input name="sicherheitscode" type="text" size="4" id="sicherheitscode"></td>
</tr>
und die "schutz.inc.php" (wird von regi.php eingebunden, ausschnitt dieser Funktion, die anderen Fuktionen dürften nicht relevant werden, da sie nicht aufgerufen werden):
- Code: Alles auswählen
//Anweisungen zum eintragen von Kommentaren!
if ($action == 'commentar') {
//Daten auslesen
$comment_userid = $_POST['comment_userid'];
$comment_news = $_POST['comment_news'];
$comment_ip = $_POST['comment_ip'];
$comment_host = $_POST['comment-host'];
$comment_time = $_POST['comment_time'];
$comment_referer = $_POST['comment_referer'];
$comment_name = $_POST['comment_name'];
$comment_text = $_POST['comment_text'];
$sicherheitscode = $_POST['sicherheitscode'];
//Daten umwandeln
$comment_text=nl2br($comment_text);
$comment_text=eregi_replace("\n", "", $comment_text);
//Sicherheitscode überprüfen
function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
$sicherheitseingabe = encrypt($sicherheitscode, "29jfkd921");
$sicherheitseingabe = str_replace("=", "", $sicherheitseingabe);
if($sicherheitseingabe == $_SESSION["rechen_captcha_spam"] AND $sicherheitscode == true){
} else {
header("Location: $comment_referer&comment_status_secure");
exit;
}
//Eintragen
$comment_SQL="INSERT INTO kommentare (comment_news,comment_userid,comment_time,comment_name,comment_text,comment_ip,comment_host) VALUES ('$comment_news','$comment_userid','$comment_time','$comment_name','$comment_text','$comment_ip','$comment_host')";
if (mysql_query($comment_SQL))
{
header("Location: $comment_referer&comment_status_answer");
exit;
}
else {
header("Location: $comment_referer&comment_status_error");
exit;
}
}
P.S. @ Rob [Admin]:
Der Beitrag "Wichtig: Biete zuerst lesen" hat einen Rechtschreibfehler:
Das Wort "Biete" bitte mit doppel t und ohne e, falls es "bitte" heißen soll
