Einbau geklappt, aber es funktioniert nicht... GELÖST, DANKE

Hier werden Probleme rund um das Rechen Captcha behandelt

Moderator: frameguard

Einbau geklappt, aber es funktioniert nicht... GELÖST, DANKE

Beitragvon GudrunS » 06.01.2008, 01:23

Hallo,

ich habe das Rechen-Captcha erfolgreich eingebaut. Das Formular funktioniert auch insoweit, dass erkannt wird, wenn das Feld leer ist.
ABER: das Rechen-Captcha wird nicht ausgeführt. Es reicht, dass IRGENDWAS in dem Feld steht, also auch Buchstaben etc.
Der Key im Formular und in der rechen-captcha.php ist identisch, das habe ich überprüft.

Was habe ich falsch gemacht? Meine php-Kenntnisse reichen einfach nicht aus und ich brauche auch ganz konkrete Hilfen...

Vielen Dank im voraus
GudrunS

Hier ist das Formular zu finden:
http://www.diebuecherwuermer.de/formular-neu.php

Hier ist der Quellcode meines Formulars - die für das Captcha eingefügten Teile habe ich rot markiert:
<?php
session_start();
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);
}
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "39akr482");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
unset($_SESSION['rechen_captcha_spam']);
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Die B&uuml;cherw&uuml;rmer - Kontaktformular</title>
<style type="text/css">
<!--
body {
font-family: Arial,Verdana,sans-serif;
}
a {
text-decoration:underline; color:#000000; font-weight:bold;
}
a#isbn {
text-decoration:none; color:#000000; font-weight:normal;
}
-->
</style>
<link rel="shortcut icon" href="http://www.diebuecherwuermer.de/favicon.ico">
<meta name="description" content="Angebotsseite der Die B&uuml;cherw&uuml;rmer zum privaten Verkauf von B&uuml;chern.">
<meta name="author" content="Gudrun Schwarz">
<meta name="keywords" lang="de" content="antiquarische, gebrauchte, vergriffene B&uuml;cher, Buecher, Antiquariat, Antiquariate, antiquarisch, B&uuml;cherb&ouml;rse, Buecherboerse, Flohmarkt, B&uuml;chermarkt, Buechermarkt, Buchmarkt, second-hand, second hand, Fachbuch, Fachb&uuml;cher, Fachbuecher, Verzeichnis, Angebot, einkaufen, kaufen, bestellen, suchen, lesen, privat, Baden-W&uuml;rttemberg, Biographie, Biografie, Biographien, Biografien, Geschichte, Humor, Jura, Kirchen, Krimi, Thriller, Kunst, Unterhaltungsliteratur, Literatur, Naturwissenschaften, Philologien, Philosophie, Politik, Reise, Theologie, Religion, Wirtschaftswissenschaft">
<meta name="keywords" lang="en-us" content="used books, second hand books">
<meta name="keywords" lang="en" content="used books, second hand books">
<meta name="page-topic" content="Verkauf gebrauchter B&uuml;cher">
<meta name="Rating" content="General">
<meta name="Distribution" content="Global">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="content-language" content="de">
<meta name="language" content="German, Deutsch, de, at, ch">
<meta http-equiv="expires" content="0">
<meta http-equiv="cache-control" content="no-cache">
<meta name="robots" content="index, follow">
<meta name="revisit-after" content="20 days">
<meta name="DC.Title" content="Die B&uuml;cherw&uuml;rmer">
<meta name="DC.Creator" content="Gudrun Schwarz">
<meta name="DC.Subject" content="antiquarische, gebrauchte, vergriffene B&uuml;cher, Buecher, Antiquariat, Antiquariate, antiquarisch, B&uuml;cherb&ouml;rse, Buecherboerse, Flohmarkt, B&uuml;chermarkt, Buechermarkt, Buchmarkt, second-hand, second hand, Fachbuch, Fachb&uuml;cher, Fachbuecher, Verzeichnis, Angebot, einkaufen, kaufen, bestellen, suchen, lesen, privat, Baden-W&uuml;rttemberg, Biographie, Biografie, Biographien, Biografien, Geschichte, Humor, Jura, Kirchen, Krimi, Thriller, Kunst, Unterhaltungsliteratur, Literatur, Naturwissenschaften, Philologien, Philosophie, Politik, Reise, Theologie, Religion, Wirtschaftswissenschaft">
<meta name="DC.Description" content="Angebotsseite der Die B&uuml;cherw&uuml;rmer zum privaten Verkauf von B&uuml;chern.">
<meta name="DC.Type" content="Dataset">
<meta name="DC.Type" content="Service">
<meta name="DC.Type" content="Text">
<meta name="DC.Format" content="text/html">
<meta name="DC.Identifier" content="http://www.diebuecherwuermer.de/formular.php">
<meta name="DC.Language" content="de">
</head>
<body bgcolor="#ffffff" text="#000000">
<table cellpadding="2" align="center" width="95%" border="0" summary="Tabelle dient der Navigation auf der Seite">
<tr>
<td align="center" abbr="Logo"><a href="index.htm"><img src="bw-logo.jpg" border="0" alt="Logo" name="Logo" title="Logo"></a></td>
<td align="center" abbr="Die B&uuml;cherw&uuml;rmer"><a href="index.htm"><img src="diebuecherwuermer.gif" border="0" alt="Die B&uuml;cherw&uuml;rmer" name="Die B&uuml;cherw&uuml;rmer" title="Die B&uuml;cherw&uuml;rmer"></a></td>
</tr>
<tr>
<td rowspan="2" valign="top" bgcolor="#EAFFF4" width="20%" abbr="Navigationsleiste mit den Links zur Navigation im Angebot">
<table border="0">
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td width="95%"><a href="index.htm"><small>Home</small></a></td>
<td align="right"><a href="#eng"><img src="englisch.gif" border="0" alt="Link to english pages" name="Link to english pages" title="Link to english pages"></a></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td colspan="2"><a href="neues.htm"><small>Neue Angebote</small></a></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td colspan="2"><a href="buchlist.htm"><small>Alle B&uuml;cher <small>(mit Bildern)</small></small></a></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td colspan="2"><a href="buchlist-text.htm"><small>Alle B&uuml;cher <small>(nur Text)</small></small></a></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td colspan="2"><a href="themen.htm"><small>Themenlisten</small></a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan="2">
<small>&gt; <a href="buch-bawue.htm">Baden-W&uuml;rttemberg</a></small><br>
<small>&gt; <a href="buch-bio.htm">Biographien</a></small><br>
<small>&gt; <a href="buch-eng.htm">Englische B&uuml;cher</a></small><br>
<small>&gt; <a href="buch-franz.htm">Franz&ouml;sische B&uuml;cher</a></small><br>
<small>&gt; <a href="buch-gesch.htm">Geschichte</a></small><br>
<small>&gt; <a href="buch-hum.htm">Humor</a></small><br>
<small>&gt; <a href="buch-jura.htm">Jura</a></small><br>
<small>&gt; <a href="buch-kirch.htm">Kirchen</a></small><br>
<small>&gt; <a href="buch-krimi.htm">Krimis, Thriller</a></small><br>
<small>&gt; <a href="buch-kunst.htm">Kunst</a></small><br>
<small>&gt; <a href="buch-lit.htm">Literatur</a></small><br>
<small>&gt; <a href="buch-natur.htm">Naturwissenschaften</a></small><br>
<small>&gt; <a href="buch-philog.htm">Philologien</a></small><br>
<small>&gt; <a href="buch-philos.htm">Philosophie</a></small><br>
<small>&gt; <a href="buch-pol.htm">Politik</a></small><br>
<small>&gt; <a href="buch-reise.htm">Reise</a></small><br>
<small>&gt; <a href="buch-theo.htm">Theologie</a></small><br>
<small>&gt; <a href="buch-wirt.htm">Wirtschaft</a></small>
</td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td colspan="2"><a href="zslist.htm"><small>Zeitschriften</small></a></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td colspan="2"><a href="romane.htm"><small>Romane</small></a></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td colspan="2"><a href="links.htm"><small>Links</small></a></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td colspan="2"><a href="versand.htm"><small>Kauf und Versand</small></a></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td colspan="2"><a href="impress.htm"><small>Impressum / Datenschutz</small></a></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td colspan="2"><a href="sitemap.htm"><small>Sitemap</small></a></td>
</tr>
</table>
<hr noshade color="#008040">
<table border="0">
<tr>
<td colspan="2"><a name="eng"></a><img src="englisch.gif" border="0" alt="Link to english pages" name="Link to english pages" title="Link to english pages"> <small><b>English Information:</b></small></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td><a href="en-info.htm"><small>About us</small></a></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td><a href="en-shipping.htm"><small>Buying, Prices, Shipping</small></a></td>
</tr>
<tr>
<td valign="top"><img src="bullet.gif" border="0" alt="Aufz&auml;hlungszeichen" name="Aufz&auml;hlungszeichen" title="Aufz&auml;hlungszeichen"></td>
<td><a href="en-glossary.htm"><small>English Glossary</small></a></td>
</tr>
</table>
<hr noshade color="#008040">
<table border="0">
<tr>
<td>
<!--WEBBOT bot="HTMLMarkup" startspan ALT="Site Meter" -->
<script type="text/javascript" language="JavaScript">var site="s22diebuecherwuermer"</script>
<script type="text/javascript" language="JavaScript1.2" src="http://s22.sitemeter.com/js/counter.js?site=s22diebuecherwuermer">
</script>
<noscript>
<a href="http://s22.sitemeter.com/stats.asp?site=s22diebuecherwuermer" target="_top">
<img src="http://s22.sitemeter.com/meter.asp?site=s22diebuecherwuermer" alt="Site Meter" border="0"/></a>
</noscript>
<!-- Copyright (c)2005 Site Meter -->
<!--WEBBOT bot="HTMLMarkup" Endspan -->
</td>
</tr>
</table>
<p>
</td>
<td valign="top">
<?php
// Ziel der Postoperation
// diese Seite oder eine Seite welche diese
// included
// ==========================================
$target="formular-neu.php";
// ==========================================
$error="";
// ===================================================================
if ( isset($gesendet)) {
// $gesendet kann nur nach dem senden des Formulars gesetzt sein
// --------------------------------------------------------------
// Formular auswerten
// =====================================
// Felder f&uuml;r Fehlermeldung auswerten
// ======================================
// Felder welche nicht ausgewertet werden sollen einfach hier mittels // kommentieren
if ($comment=="") { $error .=" Ihre Nachricht,";}
if ($email=="") { $error .=" Email,";}
if ($name=="") { $error .=" Name,";}
if ($sicherheitscode=="") { $error .=" Spamschutz";}

// Wenn keine Eingabe Fehler aufgetreten sind Best&auml;tigung ausgeben
// ======================================
if ($error=="") {
$Nachricht = "Ihre Nachricht:\n";
$Nachricht .= "$comment\n\n";
$Nachricht .= "Nachricht von:\n";
$Nachricht .= "Email: $email\n";
$Nachricht .= "Name: $name\n\n";
$Domain=eregi_replace(".*\.([a-z0-9\-]*)\.([a-z]*)$","\\1.\\2",getenv("SERVER_NAME"));
$Empfaenger = "diebuecherwuermer@gmx.de, $email";
$Subject = "Nachricht an 'Die Buecherwuermer'";
$Header = "From: Die Buecherwuermer <diebuecherwuermer@gmx.de>\n";
$Header .= "Reply-To: $email";

mail($Empfaenger,$Subject,$Nachricht,$Header);
?>
<table cellspacing=0 cellpadding=0 border=0>
<tr>
<td><h1>Vielen Dank f&uuml;r Ihre Nachricht.<br>
Wir melden uns in K&uuml;rze bei Ihnen.</h1></td>
</tr>
</table>
<?php
echo <<<FORMULARAUSGABE
<h2>Ihre Nachricht:</h2>
$comment<p>
<b>Nachricht von:</b><br>
Email: $email<br>
Name: $name<p>
FORMULARAUSGABE;
// ENDE: if ($error=="")
}
// ENDE: if gesendet
}
?>
<?php
// Formular nur ausgeben wenn noch nicht gesendet worden ist oder wenn ein Eingabefehler vorlag
// ==========================================================
if ($error !="" || (! isset($gesendet)) ) {
?>
<form action="<?php echo $target; ?>" method=post>
<input type="hidden" name="gesendet" value="1">
<table border=0 cellpadding=2 cellspacing=2>
<?php
// Eingabe-Fehler behandeln
// -------------------------
if ($error !="") {
// Komma am Ende entfernen
// ========================
$error=ereg_replace(",$" , "<br>" , $error);
$error = "<b>Folgende Felder wurden nicht ausgef&uuml;llt:</b><br>\n".$error;
?>
<tr>
<td>&nbsp;</td>
<td><font color="Red"><?php echo $error; ?></font></td>
</tr>
<?php
}
?>
<tr>
<td colspan="2"><h1>Ich habe folgende Frage / Anregung:</h1></td>
</tr>
<tr>
<td valign="top"><b>Ihre Nachricht:</b><font color="Red"><b>*</b></font></td>
<td><textarea cols=50 rows=6 name="comment"><?php if (isset($comment)) {echo $comment;}?></textarea></td>
</tr>
<tr>
<td><b>Email:</b><font color="Red"><b>*</b></font></td>
<td><input type="text" name="email" size="58" maxlength="100" value="<?php if (isset($email)) {echo $email;}?>" ></td>
</tr>
<tr>
<td><b>Name:</b><font color="Red"><b>*</b></font></td>
<td><input type="text" name="name" size="58" maxlength="100" value="<?php if (isset($name)) {echo $name;}?>" ></td>
</tr>
<tr>
<td><b>Spamschutz:</b><font color="Red"><b>*</b></font></td>
<td><img src="rechen-captcha.php"> <input type="text" name="sicherheitscode" size="5" maxlength="10" value="<?php if (isset($sicherheitscode)) {echo $sicherheitscode;}?>" ></td>
</tr>

<tr>
<td colspan="2"><small><b>Eine Kopie der Nachricht wird an Ihre Email-Adresse geschickt.</b></small></td>
</tr>
<tr>
<td><small><font color="Red"><b>* bitte ausf&uuml;llen</b></font></small></td>
<td><input type="submit" value="Abschicken" alt="Abschicken" name="Abschicken" title="Abschicken">&nbsp;<input type="reset" value="Zur&uuml;cksetzen" alt="Zur&uuml;cksetzen" name="Zur&uuml;cksetzen" title="Zur&uuml;cksetzen"></td>
</tr>
<tr>
<td colspan="2"><hr noshade color="#008040"></td>
</tr>
<tr>
<td valign="top" colspan="2"><font color="Red"><b>Hinweis:</b></font><br>
Alle Daten, die in diesem Formular &uuml;bermittelt werden, ben&ouml;tigen wir nur f&uuml;r Ihre Anfrage. Sie werden nicht dauerhaft gespeichert und nicht weitergegeben.</td>
</tr>
</table>
</form>
<?php
}
?>
<p>
<hr noshade color="#008040">
<small>Kontakt: <a href="mailto:diebuecherwuermer@gmx.de">diebuecherwuermer@gmx.de</a></small><br>
<small>URL: http://www.diebuecherwuermer.de/formular.php</small>
</td>
</tr>
</table>
<p>
</body>
</html>
Zuletzt geändert von GudrunS am 10.01.2008, 21:48, insgesamt 1-mal geändert.
GudrunS
 
Beiträge: 3
Registriert: 06.01.2008, 01:15

Beitragvon Steef389 » 10.01.2008, 15:31

Hallo Gudrun.

Der Fehler ist so simpel, dass man ihn sehr leicht übersieht.
Und zwar:
Du prüfst am Anfang, ob der Sicherheitscode korrekt ist. Falls ja, dann entfernt er die Sessionvariable, falls nein, macht er nichts.
Und später prüfst du nur, ob das Feld ausgefüllt ist. Also musst du den Code so ändern:

am Anfang musst du dies einfügen:

$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "39akr482");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
$sicherheitscode_korrekt = false;
if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
$sicherheitscode_korrekt = true;
unset($_SESSION['rechen_captcha_spam']);
}


Und dann unten, wo du die Eingaben prüfst:

if ($comment=="") { $error .=" Ihre Nachricht,";}
if ($email=="") { $error .=" Email,";}
if ($name=="") { $error .=" Name,";}
if ($sicherheitscode=="") { $error .=" Spamschutz";}
if ($sicherheitscode_korrekt==false) { $error .=" Spamschutz";}


Dann sollte es funktionieren.

MfG Steef

PS: Ich hab eine E-Mail als Test versendet, um den Fehler besser zu verstehen.
Steef389
 
Beiträge: 57
Registriert: 20.06.2007, 20:31

Beitragvon GudrunS » 10.01.2008, 21:47

Hallo Steef,

vielen, vielen Dank!

Jetzt funktioniert es tatsächlich! Ich verhasple mich in den php-Abfragen immer und irgendwann sehe ich dann den Wald vor Bäumen nicht.

Übrigens, diese Zeile habe ich auch noch herausgenommen:
if ($sicherheitscode=="") { $error .=" Spamschutz";}
da diese Abfrage durch Deine Kontrolle überflüssig geworden ist.

Toll, das einem hier so gut geholfen wird.

Gruß
Gudrun
GudrunS
 
Beiträge: 3
Registriert: 06.01.2008, 01:15


Zurück zu Rechen Captcha

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron