Seite 1 von 1

Problem mit Kontaktformular mit Captcha

Verfasst: 31.08.2010 17:28
von moin2010
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:

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";
}  

?>

Re: Problem mit Kontaktformular mit Captcha

Verfasst: 31.08.2010 19:57
von dagobert50gold
Könntest du bitte mal die genaue Fehlermeldung zitieren? Um welchen Mod geht es? Bastelst du an einem?

Re: Problem mit Kontaktformular mit Captcha

Verfasst: 31.08.2010 20:36
von moin2010
Das hier ist es:
http://www.redaxo.de/165-Moduldetails.h ... ule_id=231

Es kommt diese Fehlermeldung
Der eingegebene Bestätigungscode ist fehlerhaft.

Re: Problem mit Kontaktformular mit Captcha

Verfasst: 31.08.2010 20:39
von dagobert50gold
Ist dein Forum deshalb down?

Aber in deinem verlinkten Artikel steht:
Das Redaxo Team prüft diese Module/Templates/Addons generell nicht auf Richtigkeit bzw. auf Funktionalität.
Also meldest du dich am besten dort.

Für was brauchst du das überhaupt? In phpBB ist doch schon Captcha drin :-? ?!

Re: Problem mit Kontaktformular mit Captcha

Verfasst: 01.09.2010 14:52
von moin2010
hat sich schon erledigt.