Captcha wird angezeigt, findet aber nicht statt!?

Hier werden Probleme rund um das Rechen Captcha behandelt

Moderator: frameguard

Captcha wird angezeigt, findet aber nicht statt!?

Beitragvon mikax » 30.07.2007, 14:09

Hallo, also irgendwie bekomm ich das mit der einbindung nicht auf die reihe, das rechen capatcha wir zwar angezeigt und ich habe das auch in die überprüfung des formulars eingebettet, so das etwas eingetragen werden muss, aber ob das ergebnis richtig oder falsch ist ist egal!?

Code: Alles auswählen
   <?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"], "hda89z32djkasd8z32");
   $sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
   if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
   unset($_SESSION['rechen_captcha_spam']);
   
   }
   ?>
   
   <?php
   $gesendet = $_POST['gesendet'];
   $vorname = $_POST['vorname'];
   $nachname = $_POST['nachname'];
   $betreff = $_POST['betreff'];
   $nachricht = $_POST['nachricht'];
   $email = $_POST['email'];
   
   if ($gesendet == "Absenden") {
   # Ihre E-Mail-Adresse
   $an ="EMAIL@adresse.de";
   
   # Diese Nachricht wird an Ihre E-Mail-Adresse gesendet
   $text ="Hallo,\n Sie haben eine neue Nachricht von $vorname $nachname erhalten:\n\n
   ====\n $nachricht\n====\n\nSie können $vorname $nachname unter dieser $email erreichen.";
   mail($an,$betreff,$text,"From: ".$email);
   echo "<b>Ihre Nachricht wurde gesendet!</b>";
   }
   else { ?>
   
   <?php
   }
   ?>
   
   <script type="text/javascript">
   function eingaben_ueberpruefen(){
   var mail = document.Formular.email.value;
   if (document.Formular.vorname.value.length < 3){
   alert("Sie haben noch keinen Vornamen eingegeben!")
   document.Formular.vorname.focus();
   return false;
   }
   
   else if (document.Formular.nachname.value.length < 3){
   alert("Bitte geben Sie Ihren Nachnamen ein");
   document.Formular.nachname.focus();
   return false;
   }
   
   else if (mail.length < 10 || mail.indexOf ('@',0) == -1 || mail.indexOf ('.',0) == -1){
   alert("Bitte geben Sie eine gültige E-Mail-Adresse ein.")
   document.Formular.email.select();
   return false;
   }
   
   else if (document.Formular.betreff.value.length < 10){
   alert("Bitte geben Sie einen Betreff ein!")
   document.Formular.betreff.focus();
   return false;
   }
   
   else if (document.Formular.nachricht.value.length < 20){
   alert("Bitte geben Sie eine Nachricht ein!")
   document.Formular.nachricht.focus();
   return false;
   }
   
   else if (document.Formular.sicherheitscode.value.length < 1){
   alert("Bitte geben Sie den Code ein!")
   document.Formular.sicherheitscode.focus();
   return false;
   }
   
   
   else
   return true;
   }
   </script>
   <head>
   </head>
   
   <html>
   <body>
   <div align=center>
   <h3>Kontaktformular</h3>
   
   <form name="Formular" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"
   onSubmit="return eingaben_ueberpruefen();">
   <table cellPadding=4 cellSpacing=2 border=1>
   <tr>
   <td><b>Vorname:</b></td>
   <td><input type="text" name="vorname" size="35" maxlength="40"></td>
   </tr>
   <tr>
   <td><b>Nachname:</b></td>
   <td><input type="text" name="nachname" size="35" maxlength="40"></td>
   </tr>
   <tr>
   <td><b>E-Mail:</b></td>
   <td><input type="text" name="email" size="35" maxlength="40"></td>
   </tr>
   <tr>
   <td><b>Betreff:</b></td>
   <td><input type="text" name="betreff" size="45" maxlength="60"></td>
   </tr>
   <tr>
   <td colspan=2>
   <b>Nachricht:</b><br><textarea name="nachricht" cols="45" rows="10"></textarea>
   </td>
   </tr>
   <tr>
   <td><img src="rechen-captcha.php"></td>
   <td><input type="text" name="sicherheitscode" size="5"></td>
   </tr>
   <tr>
   <th colspan=2><br>
   <input type="submit" name="gesendet" value="Absenden"> *
   <input type="reset">
   </th>
   </tr>
   </table>
   </form>
   
   
   </div>
   </body>
   </html>
mikax
 
Beiträge: 4
Registriert: 30.07.2007, 14:02

Beitragvon Rob [Admin] » 01.08.2007, 10:58

Du beendest schon hier die Überprüfung =>

Code: Alles auswählen
   if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
   unset($_SESSION['rechen_captcha_spam']);
   
   } //Hier ist schluss


Sprich da wird nichts gemacht. Du musst deinen Code so anpassen, dass die Abfrage in die Mail Funktion kommt. Sprich in etwa so:


Code: Alles auswählen
<?php
   session_start();
   ?>
   
   <?php
   $gesendet = $_POST['gesendet'];
   $vorname = $_POST['vorname'];
   $nachname = $_POST['nachname'];
   $betreff = $_POST['betreff'];
   $nachricht = $_POST['nachricht'];
   $email = $_POST['email'];
   
   if ($gesendet == "Absenden") {

   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"], "hda89z32djkasd8z32");
   $sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
   if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
   unset($_SESSION['rechen_captcha_spam']);


   # Ihre E-Mail-Adresse
   $an ="EMAIL@adresse.de";
   
   # Diese Nachricht wird an Ihre E-Mail-Adresse gesendet
   $text ="Hallo,\n Sie haben eine neue Nachricht von $vorname $nachname erhalten:\n\n
   ====\n $nachricht\n====\n\nSie können $vorname $nachname unter dieser $email erreichen.";
   mail($an,$betreff,$text,"From: ".$email);
   echo "<b>Ihre Nachricht wurde gesendet!</b>";
   }else{
      echo "<b>Captcha Code falsch</b>";
   }
   }
   else { ?>
   
   <?php
   }
   ?>
   
   <script type="text/javascript">
   function eingaben_ueberpruefen(){
   var mail = document.Formular.email.value;
   if (document.Formular.vorname.value.length < 3){
   alert("Sie haben noch keinen Vornamen eingegeben!")
   document.Formular.vorname.focus();
   return false;
   }
   
   else if (document.Formular.nachname.value.length < 3){
   alert("Bitte geben Sie Ihren Nachnamen ein");
   document.Formular.nachname.focus();
   return false;
   }
   
   else if (mail.length < 10 || mail.indexOf ('@',0) == -1 || mail.indexOf ('.',0) == -1){
   alert("Bitte geben Sie eine gültige E-Mail-Adresse ein.")
   document.Formular.email.select();
   return false;
   }
   
   else if (document.Formular.betreff.value.length < 10){
   alert("Bitte geben Sie einen Betreff ein!")
   document.Formular.betreff.focus();
   return false;
   }
   
   else if (document.Formular.nachricht.value.length < 20){
   alert("Bitte geben Sie eine Nachricht ein!")
   document.Formular.nachricht.focus();
   return false;
   }
   
   else if (document.Formular.sicherheitscode.value.length < 1){
   alert("Bitte geben Sie den Code ein!")
   document.Formular.sicherheitscode.focus();
   return false;
   }
   
   
   else
   return true;
   }
   </script>
   <head>
   </head>
   
   <html>
   <body>
   <div align=center>
   <h3>Kontaktformular</h3>
   
   <form name="Formular" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"
   onSubmit="return eingaben_ueberpruefen();">
   <table cellPadding=4 cellSpacing=2 border=1>
   <tr>
   <td><b>Vorname:</b></td>
   <td><input type="text" name="vorname" size="35" maxlength="40"></td>
   </tr>
   <tr>
   <td><b>Nachname:</b></td>
   <td><input type="text" name="nachname" size="35" maxlength="40"></td>
   </tr>
   <tr>
   <td><b>E-Mail:</b></td>
   <td><input type="text" name="email" size="35" maxlength="40"></td>
   </tr>
   <tr>
   <td><b>Betreff:</b></td>
   <td><input type="text" name="betreff" size="45" maxlength="60"></td>
   </tr>
   <tr>
   <td colspan=2>
   <b>Nachricht:</b><br><textarea name="nachricht" cols="45" rows="10"></textarea>
   </td>
   </tr>
   <tr>
   <td><img src="rechen-captcha.php"></td>
   <td><input type="text" name="sicherheitscode" size="5"></td>
   </tr>
   <tr>
   <th colspan=2><br>
   <input type="submit" name="gesendet" value="Absenden"> *
   <input type="reset">
   </th>
   </tr>
   </table>
   </form>
   
   
   </div>
   </body>
   </html>
Rob [Admin]
Site Admin
 
Beiträge: 143
Registriert: 23.12.2006, 12:27

Beitragvon mikax » 01.08.2007, 20:07

ja super danke klappt jetzt 1a!

aber noch eine frage unzwar:

Bild
mikax
 
Beiträge: 4
Registriert: 30.07.2007, 14:02

Beitragvon Rob [Admin] » 01.08.2007, 20:11

Nein das geht leider nicht, da die Daten Serverseitig geprüft werden müssen, aber du kannst die Daten wieder ins Formular eintragen, mit einem

value="<?php echo $_POST["xxx"]; ?>"

wobei das xxx für den Feldname steht, also zum Beispiel vorname, nachname, email, betreff und das beim jeweiligen input einfügen, also zum Beispiel

<input type="text" name="vorname" size="35" maxlength="40" value="<?php echo $_POST["vorname"]; ?>" >
Rob [Admin]
Site Admin
 
Beiträge: 143
Registriert: 23.12.2006, 12:27

Beitragvon mikax » 02.08.2007, 16:42

ok habe ich gemacht klappt auch also die angaben bleiben bei falscher eingabe vorhanden! aber jetzt werden die anderen felder nicht merh überprüft auf gültige email und so?!

Code: Alles auswählen
<?php
   session_start();
   ?>
   
   <?php
   $gesendet = $_POST['gesendet'];
   $vorname = $_POST['vorname'];
   $nachname = $_POST['nachname'];
   $betreff = $_POST['betreff'];
   $nachricht = $_POST['nachricht'];
   $email = $_POST['email'];
   
   if ($gesendet == "Absenden") {

   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"], "hda89z32djkasd8z32");
   $sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
   if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
   unset($_SESSION['rechen_captcha_spam']);


   # Ihre E-Mail-Adresse
   $an ="EMAIL@adresse.de";
   
   # Diese Nachricht wird an Ihre E-Mail-Adresse gesendet
   $text ="Hallo,\n Sie haben eine neue Nachricht von $vorname $nachname erhalten:\n\n
   ====\n $nachricht\n====\n\nSie können $vorname $nachname unter dieser $email erreichen.";
   mail($an,$betreff,$text,"From: ".$email);
   echo "<b>Ihre Nachricht wurde gesendet!</b>";
   }else{
      echo "<b>Captcha Code falsch</b>";
   }
   }
   else { ?>
   
   <?php
   }
   ?>
   
   <script type="text/javascript">
   function eingaben_ueberpruefen(){
   var mail = document.Formular.email.value;
   if (document.Formular.vorname.value.length < 3){
   alert("Sie haben noch keinen Vornamen eingegeben!")
   document.Formular.vorname.focus();
   return false;
   }
   
   else if (document.Formular.nachname.value.length < 3){
   alert("Bitte geben Sie Ihren Nachnamen ein");
   document.Formular.nachname.focus();
   return false;
   }
   
   else if (mail.length < 10 || mail.indexOf ('@',0) == -1 || mail.indexOf ('.',0) == -1){
   alert("Bitte geben Sie eine gültige E-Mail-Adresse ein.")
   document.Formular.email.select();
   return false;
   }
   
   else if (document.Formular.betreff.value.length < 10){
   alert("Bitte geben Sie einen Betreff ein!")
   document.Formular.betreff.focus();
   return false;
   }
   
   else if (document.Formular.nachricht.value.length < 20){
   alert("Bitte geben Sie eine Nachricht ein!")
   document.Formular.nachricht.focus();
   return false;
   }
   
   else if (document.Formular.sicherheitscode.value.length < 1){
   alert("Bitte geben Sie den Code ein!")
   document.Formular.sicherheitscode.focus();
   return false;
   }
   
   
   else
   return true;
   }
   </script>
   <head>
   </head>
   
   <html>
   <body>
   <div align=center>
   <h3>Kontaktformular</h3>
   
   <form name="Formular" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"
   onSubmit="return eingaben_ueberpruefen();">
   <table cellPadding=4 cellSpacing=2 border=1>
   <tr>
   <td><b>Vorname:</b></td>
   <td><input type="text" name="vorname" size="35" maxlength="40" value="<?php echo $_POST["vorname"]; ?>" ></td>
   </tr>
   <tr>
   <td><b>Nachname:</b></td>
   <td><input type="text" name="nachname" size="35" maxlength="40" value="<?php echo $_POST["nachname"]; ?>" ></td>
   </tr>
   <tr>
   <td><b>E-Mail:</b></td>
   <td><input type="text" name="email" size="35" maxlength="40" value="<?php echo $_POST["email"]; ?>" ></td>
   </tr>
   <tr>
   <td><b>Betreff:</b></td>
   <td><input type="text" name="betreff" size="35" maxlength="60" value="<?php echo $_POST["betreff"]; ?>" ></td>
   </tr>
   <tr>
   <td colspan=2>
   <b>Nachricht:</b>
   <br><textarea name="nachricht" cols="45" rows="10" value="<?php echo $_POST["nachricht"]; ?>"></textarea>
   </td>
   </tr>
   <tr>
   <td><img src="rechen-captcha.php"></td>
   <td><input type="text" name="sicherheitscode" size="5"></td>
   </tr>
   <tr>
   <th colspan=2><br>
   <input type="submit" name="gesendet" value="Absenden"> *
   <input type="reset">
   </th>
   </tr>
   </table>
   </form>
   
   
   </div>
   </body>
   </html>
mikax
 
Beiträge: 4
Registriert: 30.07.2007, 14:02


Zurück zu Rechen Captcha

Wer ist online?

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

cron