Webdesign in Siegen

Gästebuch mit Pseudo Captcha

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

Gästebuch mit Pseudo Captcha

Beitragvon Marc Freukes am 18.09.2007, 21:00

Hallöchen,

vielleicht könnt Ihr mir helfen?!
Ich habe ein Pseudo- Captcha in mein Gästebuch eingebaut, jedoch fehlt mir eine Bestätigung, dass der Beitrag erfolgreich versendet wurde. Die Bestätigung sollte von einer anderen Seite erfolgen. Außerdem bleiben die Eingaben im Formular bestehen.

Hier der Code:
Code: Alles auswählen
<?php

session_start();

$NameFehler = $EmailFehler = $NachrichtFehler = $CaptchaFehler = FALSE;
$Fehlerfrei = TRUE;

if (isset( $_POST['senden'] ))
{

   if (strlen( trim( $_POST['name'] ) ) < 3)
   {
      $Fehlerfrei = FALSE;
      $NameFehler = TRUE;
   }
   if (strlen( trim( $_POST['email'] ) ) < 3)
   {
      $Fehlerfrei = FALSE;
      $EmailFehler = TRUE;
   }
   if (strlen( trim( $_POST['nachricht'] ) ) < 3)
   {
      $Fehlerfrei = FALSE;
      $NachrichtFehler = TRUE;
   }
   if (md5( $_POST['sicherheitscode'] ) != $_SESSION['captcha_code'])
   {
      $Fehlerfrei = FALSE;
      $CaptchaFehler = TRUE;
   }
   
   
   if ($Fehlerfrei)
   {
      
$link = mysql_connect("...")or die ("Keine Verbindung moeglich");
mysql_select_db("...") or die ("Die Datenbank existiert nicht");

$name = $_POST["name"];
$email = $_POST["email"];
$nachricht = $_POST["nachricht"];

$datum = time();
$aktiv = 1;
$eintrag = "INSERT INTO ... (name, email, nachricht, datum, aktiv) VALUES ( '$name', '$email', '$nachricht', '$datum', '$aktiv')";
$eintragen = mysql_query($eintrag);

if($eintragen == true)
   {
$empfaenger = "...";
$betreff = "...";
$from = "...";
$text = "...";

mail($empfaenger, $betreff, $from, $text);
   }
   } 
}
?>

html-Teil...

<form id="kontaktformular" action="<?php echo $_SERVER['PHP_SELF']; ?>"method="post">
   <fieldset>
       
        <label for="name"><?php echo $NameFehler ? '<span style="color: #FF0000;">Ihr Name:</span>' : 'Ihr Name:'; ?></label>
           <input name="name" id="name" type="text" value="<?php echo $_POST['name']; ?>" />
        <label for="email"><?php echo $EmailFehler ? '<span style="color: #FF0000;">Ihre Email:</span>' : 'Ihre Email:'; ?></label>
           <input name="email" id="email" type="text" value="<?php echo $_POST['email']; ?>" />
        <label for="nachricht"><?php echo $NachrichtFehler ? '<span style="color: #FF0000;">Ihre Nachricht:</span>' : 'Ihre Nachricht:'; ?></label>
           <textarea rows="6" name="nachricht" id="nachricht"><?php echo $_POST['nachricht']; ?></textarea>
            <table width="220" height="51" border="0" cellpadding="0" cellspacing="0">
              <tr>
                <td height="51" align="center" valign="bottom"><img src="captcha.php" alt="Sicherheitscode" title="Sicherheitscode" width="80" height="25" /></td>
              </tr>
            </table>
           
        <label for="sicherheitscode"><?php echo $CaptchaFehler ? '<span style="color: #FF0000;">Bitte Sicherheitscode eingeben:</span>' : 'Bitte Sicherheitscode eingeben:'; ?></label>
           <input name="sicherheitscode" id="sicherheitscode" type="text" />
        <input name="senden" id="senden" type="submit" value="Absenden" class="button" />
   </fieldset>
</form>


Vielen Dank im voraus,

Marc
Marc Freukes
Mitglied
 
Beiträge: 43
Registriert: 18.07.2006

Beitragvon Dac-XP am 18.09.2007, 21:42

Sorry, habe mir den Quelltext mal durchgelesen. Aber warum verwendet du einen "pseudo"-Captcha? Hier auf DW ist gerade frisch ein Tutorial (bzw. ein Script) für einen richtigen Captchacode.
Benutzeravatar
Dac-XP
Mitglied
 
Beiträge: 1908
Registriert: 23.06.2005
Wohnort: Mönchengladbach / NRW

Gästebuch mit Pseudo Captcha

Beitragvon Marc Freukes am 19.09.2007, 15:49

Hallo Dac,

danke für Deine Hilfe. Auch wenn ich nicht weiß, wo der Unterschied zwischen einem Pseudo und einem einfachen Captcha ist, habe ich Deine Empfehlung befolgt und das Script in mein Formular aufgenommen.

Das Formular sieht nun so aus:
Code: Alles auswählen
<form>
                          <span>Name:</span><br>
                                <input>
                                <br>
                                <span>Email:</span><br>
                                <input>
                                <br>
                                <br>
                                <span>Inhalt:</span><br>
                                <textarea></textarea>

                                <br>
  <img><br>
  <span>Bitte Sicherheitscode eingeben.</span>
  <input><br>
  <input>
</form>


Das Script captchacode.php habe ich übernommen mit folgender Änderung:
Code: Alles auswählen
$ttf = $_SERVER['DOCUMENT_ROOT']."zachary.ttf";


Dem check_captcha.php habe ich noch Einiges zugefügt, wobei ich nicht weiß, ob das so geht:

Code: Alles auswählen
session_start();

if($_SESSION['captchacode'] == $_POST['user_captcha'])
  {

$link = mysql_connect("...")or die ("Keine Verbindung moeglich");
mysql_select_db("...") or die ("Die Datenbank existiert nicht");

$name = $_POST["name"];
$email = $_POST["email"];
$nachricht = $_POST["nachricht"];

$datum = time();
$aktiv = 1;

if($name == "" AND $nachricht == "")
    {
   echo "<br><a>Zurück</a>";
   exit;
   }
   

$eintrag = "INSERT INTO ... (name, email, nachricht, datum, aktiv) VALUES ( '$name', '$email', '$nachricht', '$datum', '$aktiv')";
$eintragen = mysql_query($eintrag);


if($eintragen == true)
   {
   echo "<span>Beitrag erfolgreich gespeichert.</span>";
   }

if (( $name != "") && ($nachricht != ""))
{
$empfaenger = "...";
$betreff = "Nachricht im Gaestebuch";
$from = "...";
$text = "Ein Besucher hat sich ins Gaestebuch eingetragen";

mail($empfaenger, $betreff, $from, $text);

else
   {
   echo "<span>Fehler beim Speichern</span>";
   }

echo "<br><a>Zurück</a>";


  }
else
  {

    [echo "<span>Bitte geben Sie den Sicherheitscode ein.</span>";]

  }



Zumindest erscheint in dem Formular noch kein Captcha- Bild mit Code, obwohl das jpg im gleichen Ordner liegt, wie die restlichen Dateien.

Gruß,

Marc
Marc Freukes
Mitglied
 
Beiträge: 43
Registriert: 18.07.2006

Beitragvon Dac-XP am 19.09.2007, 15:52

Mhh hätte ich vielleicht noch erwähnen sollen. Für das Script wird die GD-Library (PHPModul) benötigt und die FreeType-Bibliotheken müssen ebenfalls installiert sein. :oops:
Benutzeravatar
Dac-XP
Mitglied
 
Beiträge: 1908
Registriert: 23.06.2005
Wohnort: Mönchengladbach / NRW

Gästebuch mit Pseudo Captcha

Beitragvon Marc Freukes am 20.09.2007, 14:06

Gibt es einen anderen Weg?
Ursprünglich war ich mit dem Pseudo Captcha zufrieden. Was mir fehlte, war die Bestätigung nach Sendung des Formulars und die Löschung der Eingaben.
Kann man das irgendwie realisieren?

Vielen Dank.
Marc Freukes
Mitglied
 
Beiträge: 43
Registriert: 18.07.2006

Beitragvon Basti am 20.09.2007, 14:44

Was meinst du genau mit Bestätigung? Soll einfach eine Meldung erscheinen, die anzeigt, dass der Eintrag erfolgreich hinzugefügt wurde oder was?

Denn dann sollte das ja kein Problem darstellen, also einfach eine if-Abfrage und dann eine nette Meldung anzeigen lassen.

Kann aber auch sein, dass du was ganz anderes möchtest ^^
Benutzeravatar
Basti
Moderator
 
Beiträge: 1924
Registriert: 15.06.2006
Wohnort: Rheinbreitbach

Gästebuch mit Pseudo Captcha

Beitragvon Marc Freukes am 20.09.2007, 15:21

Ich wollte es so, wie es nun ist. Mit folgendem Code bekommt der Besucher eine Bestätigung und das Löschen erübrigt sich. Trotzdem vielen Dank an alle.
Marc Freukes
Mitglied
 
Beiträge: 43
Registriert: 18.07.2006

Gästebuch mit Pseudo Captcha

Beitragvon Marc Freukes am 20.09.2007, 15:23

Sorry, hatte in der Schnelle vergessen, den
Code: Alles auswählen
echo "<script>window.location.href='eintrag_versendet.html'</script>"
einzugeben.
Marc Freukes
Mitglied
 
Beiträge: 43
Registriert: 18.07.2006

Beitragvon elinox am 24.09.2007, 02:05

Code: Alles auswählen
<php>


Ist glaube das was du suchst. Muss aber ganz oben stehen. (Also bevor dein Script etwas ausgibt.)
Laut neuer EU-Richtlienie schließe ich hiermit die Rücknahme von bereits gelesenen Rechtschreibfehlern aus.
Benutzeravatar
elinox
Mitglied
 
Beiträge: 25
Registriert: 21.01.2007
Wohnort: Berlin


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast