Problem mit Kontaktformular mit Captcha
Verfasst: 31.08.2010 17:28
Hallo Leute
Ich habe ein Problem mit einem Kotaktformular mit Captcha.
Das Problem ist, wenn ich als Gast dort etwas schreiben möchte, und denn captcha code richtig angebe, kommt die Fehlermeldung,
das der Falsche Captcha Code angegeben wurde.
Und mein 2. Problem ist, das die nachrichten im Spam ordner angezeigt werden.
Das ist der code:
Ich habe ein Problem mit einem Kotaktformular mit Captcha.
Das Problem ist, wenn ich als Gast dort etwas schreiben möchte, und denn captcha code richtig angebe, kommt die Fehlermeldung,
das der Falsche Captcha Code angegeben wurde.
Und mein 2. Problem ist, das die nachrichten im Spam ordner angezeigt werden.
Das ist der code:
Code: Alles auswählen
<?php
session_start();
// ============== Form config ==============
// Daten für die Ausgabe der Fehlermeldung,
// Überschrift, Legend, Beschreibung, Feldnamen, "Submit"-Button
$page_info = "";
$hack_message = "REX_VALUE[5]";
//Formular
$form_header = "";
$form_legend = "";
$form_info = "";
$form_name = "REX_VALUE[1]";
$form_firma = "";
$form_email = "REX_VALUE[2]";
$form_message = "REX_VALUE[3]";
$submit_value = "REX_VALUE[4]";
$submit_titel = "Zum Absenden bitte nur 1x klicken";
// Danke-Seite
$thanks_message = "REX_VALUE[6]";
// Empfänger E-Mail
$empfaenger="REX_VALUE[7]";
$empfaengerBC="REX_VALUE[8]";
$email_titel="REX_VALUE[9]";
// ============== Ende Form config ==============
// Daten aus Form config konvertieren
if ( !function_exists('clean_text')) {
function clean_text($value = "")
{
$value = htmlentities($value);
return $value;
}
}
$page_info = clean_text($page_info);
//$hack_message = clean_text($hack_message);
$form_legend = clean_text($form_legend);
//$form_name = clean_text($form_name);
//$form_email = clean_text($form_email);
$form_firma = clean_text($form_firma);
$form_message = clean_text($form_message);
$submit_value = clean_text($submit_value);
//$submit_titel = clean_text($submit_titel);
//$thanks_message = clean_text($thanks_message);
// ============== Formularüberprüfung ==============
if (!function_exists ('cleanup')) {
function cleanup($string) {
// falls magic quotes on
if (get_magic_quotes_gpc())
{
$string = stripslashes($string);
}
$string = addslashes($string);
$string = strip_tags($string);
// "--","#";";","`","/" Ausfiltern von SQL-Statements
$string = str_replace(array("--","- -","#",";","`","/","<",">","{","}","[","]"),array("","","","","","","","","","","",""),$string);
// - mit Leerzeichen dazwischen (SQL-Kommentare!)
$string = preg_replace('#-\s+-#i',"",$string);
return $string;
} // end function cleanup
} // if (!function_exists ('cleanup'))
if (!function_exists ('checkName')) {
function checkName($string) {
// $name am Anfang Buchstabe; keine Zahlen und Nicht-Wortzeichen; dann
// beliebig viele Buchstaben, Bindestriche, Leerzeichen und Punkte
if (preg_match("/^[^\W\d_]([^\W\d_]|[\-\'\ä\Ä\ö\Ö\ü\Ü\s\.\?\?\?\?\?\?\?])*$/", stripslashes($string)))
{
return true; // OK
} else {
return false; // falsche Eingabe
}
} // end function checkName
} // if (!function_exists ('checkName'))
if (!function_exists ('checkNumeric')) {
function checkNumeric($string) {
// nur Zahlenr
if (preg_match("/^\d*$/", stripslashes($string)))
{
return true; // OK
} else {
return false; // falsche Eingabe
}
} // end function checkNumeric
} // if (!function_exists ('checkNumeric'))
if (!function_exists ('checkEmail')) {
function checkEmail($string) {
// $email mindestens a@a.aa
if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", stripslashes($string)))
{
return true; // OK
} else {
return false; // falsche Eingabe
}
} // end function checkEmail
} // if (!function_exists ('checkEmail'))
if (!function_exists ('checkMessage')) {
function checkMessage($string) {
// $email mindestens a@a.aa
if (preg_match("/^[^\d_]([^\W]|[\-\'\ä\Ä\ö\Ö\ü\Ü\s\"\.\!\?\;\,\:\?\%\(\)\+\=\@\*\?\?\?\?\?\?\?])*$/", stripslashes($string)))
{
return true; // OK
}
else
{
return false; // falsche Eingabe
}
} // end function checkMessage
} // if (!function_exists ('checkMessage'))
$hack = false; // Bool'sche Variable zeigt an, ob
// ein Hackingversuch vorliegt
// Auslesen und Säubern der Daten aus $_POST
if (sizeof($_POST) == 0)
{
$name = "";
$firma = "";
$email = "";
$message = "";
$submit = "";
} else {
$name = $_POST["name"];
$email = $_POST["email"];
$firma = $_POST["firma"];
$message = $_POST["message"];
$submit = $_POST["submit"];
$sicherheit = $_POST["sicherheitscode"];
$name = cleanup($name);
$email = cleanup($email);
$firma = cleanup($firma);
$message = cleanup($message);
$submit = cleanup($submit);
// Verifizieren der Daten
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']); } else {
$hack = true; $feld = 'Sicherheitscode';
}
if (checkName($name)!=1)
{
$hack = true; $feld = $form_name;
}
if (checkEmail($email)!=1)
{
$hack = true; $feld = $form_email;
}
if (checkMessage($message)!=1)
{
$hack = true; $feld = $form_message;
}
} // end else
// ============== Ende FormularÜberprüfung ==============
?>
<?php
// beim ersten Aufruf oder unkorrekten Eingaben Formular ausgeben
if (($submit == "") OR (($submit == $submit_value) AND ($hack == true)))
{
// Bei inkorrekten Eingaben eine Fehlermeldung ausgeben:
if ($hack)
{
?>
<p><?php echo $hack_message; ?></p>
<ul>
<li><?php echo $feld; ?></li>
</ul>
<?php
} // end if ($hack)
else
{
if ($page_info != "")
{
echo "<p>" . $page_info . "</p>\n";
}
} // end else
?>
<div id="formwrap">
<!-- Einfaches Kontaktformular mit Captcha. Code von CHRONO.net Media Works. http://www.chrono.net -->
<div id="form">
<form id="kontakt" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
<fieldset>
<?php
echo "<legend><strong>" . $form_legend . "</strong></legend>\n";
?>
<label for="name"><strong><?php echo $form_name; ?></strong></label><br />
<input class="inpt" type="text" id="name" name="name" size="38" title="<?php echo $form_name; ?>" value="<?php echo stripslashes($name); ?>" tabindex="1" /><br /><br />
<label for="email"><strong><span lang="en"><?php echo $form_email; ?></span></strong></label><br />
<input class="inpt" type="text" id="email" name="email" size="38" title="<?php echo $form_email; ?>" value="<?php echo stripslashes($email); ?>" tabindex="2" /><br /><br />
<label for="message"><strong><?php echo $form_message; ?></strong></label><br />
<textarea class="txt" id="message" name="message" title="<?php echo $form_message; ?>" cols="36" rows="8" tabindex="3"><?php echo stripslashes($message); ?></textarea><br /><br />
<label for="captcha"><strong>Sicherheitscode</strong></label><br /><?php if($REX['REDAXO'] ==0) {
?><img src="captcha/captcha.php" border="0" title="Sicherheitscode" align="left"><input type="text" name="sicherheitscode" size="4"><?php } ?><br /><br />
<input type="submit" class="senden" name="submit" value="<?php echo $submit_value; ?>" title="<?php echo $submit_titel; ?>" tabindex="4" /><br />
</fieldset>
</form>
</div>
</div>
<?php
} // if (($submit == "") OR (($submit == $submit_value) AND ($hack == true)))
elseif (($submit == $submit_value) AND ($hack == false))
{
//email abschicken
$recipient=$empfaenger;
$subject=$email_titel;
$header="From: " . $email . "\n";
$mail_body ="Das Anfrage-Formular wurde am " . date("d.m.Y") . " um " . date("H:i") . "h ausgeführt.\n";
$mail_body.="Folgende Werte wurden eingetragen:\n\n";
$mail_body.="Name: " . $name . "\n";
$mail_body.="E-Mail: " . $email . "\n\n";
$mail_body.="Message:\n\n";
$mail_body.=$message . "\n\n ---- Ende der automatisch generierten eMail ----";
mail($recipient,$subject,$mail_body,$header);
if ($empfaengerBC != ''){
$recipient=$empfaengerBC;
mail($recipient,$subject,$mail_body,$header);
}
echo '<br /><br /><p class="center"><strong>'.$thanks_message.'</strong></p>'."\n";
}
?>