Einbau ins Script - Probleme mit der if Schleife

Hier werden Probleme rund um das Zahlen Captcha behandelt

Moderator: frameguard

Einbau ins Script - Probleme mit der if Schleife

Beitragvon wandler » 23.12.2006, 20:41

Hallo,
die Anleitung konnte ich soweit folgen, nur welche Variablen sollen ich in der angesprochene if-Schleife überprüft?
Gibt es hier ein Beispielcode?

Gruss
Wandler
wandler
 
Beiträge: 3
Registriert: 23.12.2006, 20:27

Beitragvon Rob [Admin] » 23.12.2006, 23:00

Hallo Wandler

Die Variable ist schon angegeben, es geht um dies hier:
Code: Alles auswählen
if($sicherheits_eingabe == $_SESSION['captcha_spam']){


Nach diesem kommen deine anderen Überprüfungen, ist der Name vorhanden, Email korrekt? Und wenn alles korrekt ist, dann sollte erst der Gästebucheintrag gemacht werden oder die Mail abgesendet werden.

Poste doch dein Script
Rob [Admin]
Site Admin
 
Beiträge: 143
Registriert: 23.12.2006, 12:27

Beitragvon wandler » 24.12.2006, 13:02

Hallo,
Rob [Admin] hat geschrieben:Poste doch dein Script


Code: Alles auswählen
<?php include ("header.php"); ?>
<p>

<?php
// Sicherheitscode
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"], "8h384ls94");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);

if($sicherheits_eingabe == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);

}


// Um das Formular zu leeren
if ($_POST['delete'])
{
unset($_POST);
}

// Übernahme der Daten aus den Formular
if ($_POST["sendKontakt"]) {

// Variablen der Datenfelder
   $anrede      = $_POST["anrede"];
   $vorname   = $_POST["vorname"];
   $name      = $_POST["name"];
   $email      = $_POST["email"];
   $homepage   = $_POST["homepage"];
   $nachricht   = $_POST["nachricht"];
   $sicherheitscode   = $_POST["sicherheitscode"];

// Benutzerdaten des Absender
   $absendedatum = date("d.m.Y - H:i");
   $host = gethostbyaddr($REMOTE_ADDR);
   $ip = "$REMOTE_ADDR";
   $plattf = "$HTTP_USER_AGENT";

// Überprüfung der Datenfelder
if (!eregi("^[0-9]+$", $sicherheitscode)) {
   $fehler['sicherheitscode'] = "Geben sie den <strong>Sicherheitscode</strong> ein!<br />\n";
}
if (!eregi("^[a-z]+$", $anrede)) {
   $fehler['anrede'] = "Wählen Sie bitte die <strong>Anrede</strong> aus!<br />\n";
}
if (!eregi("^[a-z0-9 äüöß.-]+$", $vorname)) {
   $fehler['vorname'] = "Geben Sie bitte Ihren <strong>Vorname</strong> an!<br />\n";
}
if (!eregi("^[a-z0-9 äüöß.-]+$", $name)) {
   $fehler['name'] = "Geben Sie bitte Ihren <strong>Nachname</strong> an!<br />\n";
}
if (!eregi("^[0-9a-z_.-]+@[0-9a-z.-]+\.[a-z]{2,6}$", $email)) {
   $fehler['email'] = "Geben Sie bitte eine <strong>korrekte E-Mail-Adresse</strong> an!<br />\n";
}
if (!eregi("^[a-z0-9.:_/-]*$", $homepage)) {
   $fehler['homepage'] = "Geben Sie bitte Ihre <strong>Homepage-Adresse</strong> an!<br />\n";
}
if (!eregi("^[\n\ra-z0-9 .,äüöß@()?!-]+$", $nachricht)) {
   $fehler['nachricht'] = "Geben Sie bitte eine <strong>Nachricht</strong> an (ohne Sonderzeichen)!\n";
}

// Ausgabe des Fehler (assoziatives Array)
if (is_array($fehler))
{
print "<h1>FEHLER:</h1>\n<p>";
foreach ($fehler as $feldname => $wert)
   {
   print $wert;
   }
print "&nbsp;</p>\n";
}


// wenn kein Fehler, wird eine E-Mail versendet
   if (!isset($fehler))
   {

// Kopf der E-Mail
   $recipient = "admin@DOMAIN.de"; // Empfänger der Nachricht
   $subject = "E-Mail per Formular"; // Betreff der Nachricht
   $mailheaders = "From: "".stripslashes($_POST["vorname"])." ".stripslashes($_POST["name"])."" <".$_POST["email"].">\n";
   $mailheaders .= "Reply-To: <".$_POST["email"].">\n";
   $mailheaders .= "X-Mailer: PHP/" . phpversion();
   
// Darstellung der E-Mail
   $msg  = "Folgendes wurde am " . $absendedatum . " per Formular geschickt:\n" . "-------------------------------------------------------------------------\n\n";
   $msg .= "Anrede: " . $anrede . "\n";
   $msg .= "Vorname: " . $vorname . "\n";
   $msg .= "Name: " . $name . "\n";
   $msg .= "E-Mail: " . $email . "\n";
   $msg .= "Homepage: " . $homepage . "\n";
   $msg .= "\n\nNachricht:\n" . $nachricht . "\n\n\n";
   $msg .= "Zur Sicherheit wurden diese Daten protokolliert!\n" . "------------------------------------------------\n";
   $msg .= "IP-Adresse: " . $ip . "\n";
   $msg .= "Host: " . $host . "\n";
   $msg .= "Plattform: " . $plattf . "\n";
   
   $msg = strip_tags (stripslashes ($msg));


if (@mail($recipient,$subject,$msg,$mailheaders)) {
   // Text wenn E-Mail versendet wurde,
   print "<p>Vielen Dank " . $anrede . " " . $name . ",<br />\nIhre Nachricht wurde erfolgreich übermittelt.</p>\n";
   include("footer.php");
   exit; // mit exit wird nun das Script nach Versand angehalten, so dass das Formular nicht erneut kommt!
}

}

}
?></p>
<?php // Schleife, um Formular-Überschrift bei Fehler nicht zu zeigen
if ($fehler) {
}
   else {
      print "<p>Möchten Sie uns Ihre Meinung mitteilen? Haben Sie Kritik, Anregungen, Vorschläge oder eine Frage bzw. Idee vorzubringen?</p>";
      print "<p>Wir haben für alles ein offenes Ohr! Füllen Sie einfach dieses Formular aus und wir Antworten schnellstmöglich!</p>\n<p>";
   }
?>
<form method="post" action="<?=$_SERVER["PHP_SELF"];?>">
<table border="0" cellspacing="4" cellpadding="4">
  <tr>
    <td><b>Anrede:</b></td>
    <td><input type="radio" name="anrede" value="Herr" <?if($_POST["anrede"]=="Herr")print"checked";?> />
  Herr&nbsp;&nbsp;&nbsp;&nbsp;
  <input type="radio" name="anrede" value="Frau" <?if($_POST["anrede"]=="Frau")print"checked";?> />
  Frau</td>
  </tr>
  <tr>
    <td><b>Vorname:</b></td>
    <td><input type="text" name="vorname" size="20" value="<?=htmlentities(stripslashes($_POST["vorname"]), ENT_QUOTES, 'ISO-8859-1');?>" /></td>
  </tr>
  <tr>
    <td><b>Name:</b></td>
    <td><input type="text" name="name" size="20" value="<?=htmlentities(stripslashes($_POST["name"]), ENT_QUOTES, 'ISO-8859-1');?>" /></td>
  </tr>
  <tr>
    <td><b>E-Mail-Adresse:</b></td>
    <td><input type="text" name="email" size="20" value="<?=htmlentities(stripslashes($_POST["email"]), ENT_QUOTES, 'ISO-8859-1');?>" /></td>
  </tr>
  <tr>
    <td><b>Homepage:</b></td>
    <td><input type="text" name="homepage" size="20" value="<?=htmlentities(stripslashes($_POST["homepage"]), ENT_QUOTES, 'ISO-8859-1');?>" /></td>
  </tr>
  <tr>
    <td><b>Nachricht:</b></td>
    <td><textarea name="nachricht" cols="28" rows="4"><?=htmlentities(stripslashes($_POST["nachricht"]), ENT_QUOTES, 'ISO-8859-1');?></textarea></td>
  </tr>
  <tr>
    <td><img src="captcha/captcha.php" border="0" title="Sicherheitscode"></td>
    <td>Geben sie den Code ein: <input type="text" name="sicherheitscode" size="4"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>Bitte alle Felder ohne Sonderzeichen ausf&uuml;llen!<br>
      <br>
      <input type="submit" name="sendKontakt" value="Senden" />
      <input type="submit" name="delete" value="L&ouml;schen" /></td>
  </tr>
</table>
</form>
<?php include ("footer.php"); ?>


Wenn ich jetzt absende, wird das Formular auch versendet, wenn der Code falsch eingegeben wird!

Was mache ich hier falsch?
wandler
 
Beiträge: 3
Registriert: 23.12.2006, 20:27

Beitragvon Rob [Admin] » 24.12.2006, 13:40

So, hier die geänderte Version.

Geändert wurde:
session_start(); an den Anfang
Die Überprüfung eingebaut, mit Fehlermeldung

$fehler['captcha'] = "Captcha ungültig\n";




Code: Alles auswählen
<?php session_start();
include ("header.php"); ?>
<p>

<?php
// Sicherheitscode
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"], "8h384ls94");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);


// Um das Formular zu leeren
if ($_POST['delete'])
{
unset($_POST);
}

// Übernahme der Daten aus den Formular
if ($_POST["sendKontakt"]) {

// Variablen der Datenfelder
   $anrede      = $_POST["anrede"];
   $vorname   = $_POST["vorname"];
   $name      = $_POST["name"];
   $email      = $_POST["email"];
   $homepage   = $_POST["homepage"];
   $nachricht   = $_POST["nachricht"];
   $sicherheitscode   = $_POST["sicherheitscode"];

// Benutzerdaten des Absender
   $absendedatum = date("d.m.Y - H:i");
   $host = gethostbyaddr($REMOTE_ADDR);
   $ip = "$REMOTE_ADDR";
   $plattf = "$HTTP_USER_AGENT";

// Überprüfung der Datenfelder
if (!eregi("^[0-9]+$", $sicherheitscode)) {
   $fehler['sicherheitscode'] = "Geben sie den <strong>Sicherheitscode</strong> ein!<br />\n";
}
if (!eregi("^[a-z]+$", $anrede)) {
   $fehler['anrede'] = "Wählen Sie bitte die <strong>Anrede</strong> aus!<br />\n";
}
if (!eregi("^[a-z0-9 äüöß.-]+$", $vorname)) {
   $fehler['vorname'] = "Geben Sie bitte Ihren <strong>Vorname</strong> an!<br />\n";
}
if (!eregi("^[a-z0-9 äüöß.-]+$", $name)) {
   $fehler['name'] = "Geben Sie bitte Ihren <strong>Nachname</strong> an!<br />\n";
}
if (!eregi("^[0-9a-z_.-]+@[0-9a-z.-]+\.[a-z]{2,6}$", $email)) {
   $fehler['email'] = "Geben Sie bitte eine <strong>korrekte E-Mail-Adresse</strong> an!<br />\n";
}
if (!eregi("^[a-z0-9.:_/-]*$", $homepage)) {
   $fehler['homepage'] = "Geben Sie bitte Ihre <strong>Homepage-Adresse</strong> an!<br />\n";
}
if (!eregi("^[\n\ra-z0-9 .,äüöß@()?!-]+$", $nachricht)) {
   $fehler['nachricht'] = "Geben Sie bitte eine <strong>Nachricht</strong> an (ohne Sonderzeichen)!<br />\n";
}
if($sicherheits_eingabe != $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);
   $fehler['captcha'] = "Captcha ungültig\n";
}

// Ausgabe des Fehler (assoziatives Array)
if (is_array($fehler))
{
print "<h1>FEHLER:</h1>\n<p>";
foreach ($fehler as $feldname => $wert)
   {
   print $wert;
   }
print "&nbsp;</p>\n";
}


// wenn kein Fehler, wird eine E-Mail versendet
   if (!isset($fehler))
   {

// Kopf der E-Mail
   $recipient = "admin@DOMAIN.de"; // Empfänger der Nachricht
   $subject = "E-Mail per Formular"; // Betreff der Nachricht
   $mailheaders = "From: \"".stripslashes($_POST["vorname"])." ".stripslashes($_POST["name"])."\" <".$_POST["email"].">\n";
   $mailheaders .= "Reply-To: <".$_POST["email"].">\n";
   $mailheaders .= "X-Mailer: PHP/" . phpversion();
   
// Darstellung der E-Mail
   $msg  = "Folgendes wurde am " . $absendedatum . " per Formular geschickt:\n" . "-------------------------------------------------------------------------\n\n";
   $msg .= "Anrede: " . $anrede . "\n";
   $msg .= "Vorname: " . $vorname . "\n";
   $msg .= "Name: " . $name . "\n";
   $msg .= "E-Mail: " . $email . "\n";
   $msg .= "Homepage: " . $homepage . "\n";
   $msg .= "\n\nNachricht:\n" . $nachricht . "\n\n\n";
   $msg .= "Zur Sicherheit wurden diese Daten protokolliert!\n" . "------------------------------------------------\n";
   $msg .= "IP-Adresse: " . $ip . "\n";
   $msg .= "Host: " . $host . "\n";
   $msg .= "Plattform: " . $plattf . "\n";
   
   $msg = strip_tags (stripslashes ($msg));


if (@mail($recipient,$subject,$msg,$mailheaders)) {
   // Text wenn E-Mail versendet wurde,
   print "<p>Vielen Dank " . $anrede . " " . $name . ",<br />\nIhre Nachricht wurde erfolgreich übermittelt.</p>\n";
   include("footer.php");
   exit; // mit exit wird nun das Script nach Versand angehalten, so dass das Formular nicht erneut kommt!
}

}

}
?></p>
<?php // Schleife, um Formular-Überschrift bei Fehler nicht zu zeigen
if ($fehler) {
}
   else {
      print "<p>Möchten Sie uns Ihre Meinung mitteilen? Haben Sie Kritik, Anregungen, Vorschläge oder eine Frage bzw. Idee vorzubringen?</p>";
      print "<p>Wir haben für alles ein offenes Ohr! Füllen Sie einfach dieses Formular aus und wir Antworten schnellstmöglich!</p>\n<p>";
   }
?>
<form method="post" action="<?=$_SERVER["PHP_SELF"];?>">
<table border="0" cellspacing="4" cellpadding="4">
  <tr>
    <td><b>Anrede:</b></td>
    <td><input type="radio" name="anrede" value="Herr" <?if($_POST["anrede"]=="Herr")print"checked";?> />
  Herr&nbsp;&nbsp;&nbsp;&nbsp;
  <input type="radio" name="anrede" value="Frau" <?if($_POST["anrede"]=="Frau")print"checked";?> />
  Frau</td>
  </tr>
  <tr>
    <td><b>Vorname:</b></td>
    <td><input type="text" name="vorname" size="20" value="<?=htmlentities(stripslashes($_POST["vorname"]), ENT_QUOTES, 'ISO-8859-1');?>" /></td>
  </tr>
  <tr>
    <td><b>Name:</b></td>
    <td><input type="text" name="name" size="20" value="<?=htmlentities(stripslashes($_POST["name"]), ENT_QUOTES, 'ISO-8859-1');?>" /></td>
  </tr>
  <tr>
    <td><b>E-Mail-Adresse:</b></td>
    <td><input type="text" name="email" size="20" value="<?=htmlentities(stripslashes($_POST["email"]), ENT_QUOTES, 'ISO-8859-1');?>" /></td>
  </tr>
  <tr>
    <td><b>Homepage:</b></td>
    <td><input type="text" name="homepage" size="20" value="<?=htmlentities(stripslashes($_POST["homepage"]), ENT_QUOTES, 'ISO-8859-1');?>" /></td>
  </tr>
  <tr>
    <td><b>Nachricht:</b></td>
    <td><textarea name="nachricht" cols="28" rows="4"><?=htmlentities(stripslashes($_POST["nachricht"]), ENT_QUOTES, 'ISO-8859-1');?></textarea></td>
  </tr>
  <tr>
    <td><img src="captcha/captcha.php" border="0" title="Sicherheitscode"></td>
    <td>Geben sie den Code ein: <input type="text" name="sicherheitscode" size="4"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>Bitte alle Felder ohne Sonderzeichen ausf&uuml;llen!<br>
      <br>
      <input type="submit" name="sendKontakt" value="Senden" />
      <input type="submit" name="delete" value="L&ouml;schen" /></td>
  </tr>
</table>
</form>
<?php include ("footer.php"); ?>
Rob [Admin]
Site Admin
 
Beiträge: 143
Registriert: 23.12.2006, 12:27

Beitragvon wandler » 24.12.2006, 15:50

Funktioniert Super :D
Danke
wandler
 
Beiträge: 3
Registriert: 23.12.2006, 20:27


Zurück zu Zahlen Captcha

Wer ist online?

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

cron