Hallo zusammen!
Ich habe mein Kontaktformular mit einem Captcha ausgerüstet. Es funktioniert aber nicht so, wie ich es gern hätte. Mein Problem: Ich würde gerne die Fehler anzeige („Sie haben den Sicherheitscode falsch eingeben“) in die Fehler anzeige des Kontaktformulars einbinden („Bitte füllen Sie alle markierten Felder aus“).
Hier der Quellcode vom Formular (contact.php):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<div align="center" class="site-title">
<p>Contact</p>
</div>
<table width="500" border="0" align="center">
<tr>
<td><span class="content">Um Spam und Missbrauch zu verhindern, wird Ihre IP <strong><?php echo $_SERVER['REMOTE_ADDR']; ?></strong> gespeichert. Um das Formular abschicken zu können, muss der richtige Sicherheitscode (Spam-Schutz) in das nebenstehende Feld eingeben werden.</span></td>
</tr>
</table>
<br>
<table width="500" border="0" align="center" cellpadding="1" cellspacing="2">
<form action="index.php?show=contact-send" method="post">
<tr class="content">
<td width="160" valign="middle"><div align="right">*Name:</div></td>
<td width="229"><input name="Name" type="text" class="felder" size="30" maxlength="10">
</td>
</tr>
<tr class="content">
<td valign="middle"><div align="right">*Vorname:</div></td>
<td><input name="Vorname" type="text" class="felder" id="Vorname" size="30" maxlength="10">
</td>
</tr>
<tr class="content">
<td valign="middle"><div align="right">PLZ / Ort: </div></td>
<td><input name="PLZ" type="text" class="felder" id="PLZ3" size="8" maxlength="10">
<input name="Ort" type="text" class="felder" id="Ort3" size="20" maxlength="20">
</td>
</tr>
<tr class="content">
<td valign="middle"><div align="right"> Land: </div></td>
<td><input name="Land" type="text" class="felder" id="Land3" size="30" maxlength="20">
</td>
</tr>
<tr class="content">
<td valign="middle"><div align="right"> Tel.:</div></td>
<td><input name="Telefon" type="text" class="felder" id="Telefon5" size="30" maxlength="30">
</td>
</tr>
<tr class="content">
<td valign="middle"><div align="right">*E-Mail:</div></td>
<td><input name="E-Mail" type="text" class="felder" id="E-Mail3" size="30" maxlength="30">
</td>
</tr>
<tr class="content">
<td valign="middle"><div align="right">MSN:</div></td>
<td><input name="MSN" type="text" class="felder" id="MSN3" size="30" maxlength="30">
</td>
</tr>
<tr class="content">
<td valign="middle"><div align="right"> Website:</div></td>
<td><input name="Website" type="text" class="felder" id="Website3" size="30" maxlength="30">
</td>
</tr>
<tr class="content">
<td valign="middle"><div align="right">Betreff:</div></td>
<td><select name="Betreff" size="1" class="felder">
<option selected>Frage</option>
<option>Kritik</option>
<option>Webdesign</option>
<option>Anderes</option>
</select></td>
</tr>
<tr class="content">
<td valign="middle"><div align="right">*Nachricht:</div></td>
<td><textarea name="Nachricht" cols="40" rows="8" class="felder"></textarea></td>
</tr>
<tr valign="middle" class="content">
<td valign="middle"><div align="right">Wünsche Antwort?</div></td>
<td>Ja
<input name="Antwort" type="radio" class="felder" value="ja" checked>
Nein
<input name="Antwort" type="radio" class="felder" value="nein">
</td>
</tr>
<tr class="content">
<td valign="top"><div align="right"><img src="createimage.php" width="60" height="25"></div></td>
<td><input name="sessionkey" type="text" class="felder" id="sessionkey" value="" size="30" maxlength="6"></td>
</tr>
<tr class="content">
<td align="center" colspan="2"><input name="Send" type="submit" class="felder" value="Abschicken">
<input name="Reset" type="reset" class="felder" value="Löschen">
<br>
* = Pflichtfelder</td>
</tr>
</form>
</table>
</body>
</html>
========== Code-Ende ==========
An diesen Code sendet das Formular die eingaben (contact-send.php):
<?php
$Empfaenger = "meinemailadresse@m-widmer.com";
$IP = $_SERVER['REMOTE_ADDR'];
if($_REQUEST['Send'])
{
if(empty($_REQUEST['Name']) || empty($_REQUEST['E-Mail']) || empty($_REQUEST['Nachricht']) || empty($_REQUEST['Vorname']) || empty($_REQUEST['sessionkey']))
{
echo"Bitte gehen Sie <a href="index.php?show=contact">zurück</a> und füllen Sie alle Felder aus!";
}
else
{
$Mailnachricht = "Sie haben folgende Nachricht von $IP erhalten: \n\n";
while(list($Formularfeld, $Wert)=each($_REQUEST))
{
if($Formularfeld!="Send")
{
$Mailnachricht .= $Formularfeld.": ".$Wert."\n";
}
}
$Mailnachricht .= "\nDatum und Zeit: ";
$Mailnachricht .= date("d.m.Y H:i:s");
$Mailnachricht .= "\nIP: ";
$Mailnachricht .= $_SERVER['REMOTE_ADDR'];
$Mailbetreff = "Kontakt: ";
$Mailbetreff .= $_REQUEST['Betreff'];
mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['E-Mail']);
echo"Besten Dank für Ihre E-Mail. Ich werde so schnell wie möglich, mit Ihnen Kontakt aufnehmen.";
}
}
else
{
echo"Ein Fehler ist aufgetreten. Bitte gehen Sie auf diese <a href="index.php?show=contact">Seite zurück.</a>.";
}
?>
========== Code-Ende ==========
Fehlercode vom Captcha:
<?php
$sessionkey=$_POST["sessionkey"]; //übertragenen sessionkey speichern
if($sessionkey!=$_SESSION["imgkey"])
{
echo("alert("Geben Sie bitte eine gültige Telefonnummer ein!")");
}
?>
========== Code-Ende ==========
Es wäre auch möglich dass vor dem absenden ein alert-Fenster kommt, dass der Sicherheitscode falsch ist.
Besten Dank für Eure mithilfe!
Gruss aus der Schweiz
Marcel