ZitatOriginal von Michel
Super, so funzt es.
Es hat allerdings einen Schönheitsfehler und zwar kann ich die Email schreiben und die Rechenaufgabe lösen und dann kehrt das Formular durch das "return false" wieder in die Ausgangslage also mit leeren Felder zurück...
Normalerweise wird in der "return false"-Ausgabe ja der Java-Script-Zurück-Link angezeigt. Wenn man auf den klick wird bei mir normalerweise das Formular mit der Mail wieder angezeigt.
Ansonsten kannst du auch folgenden Quellcode verwenden:
[PHP]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Kontaktformular</title>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="de" />
</head>
<body>
<?PHP
//Autor: Michael Müller - www.php4u.net
function check_mail($email)
{
if (eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}", $email))
{
return TRUE;
}
else
{
return FALSE;
}
}
//Hier wird überprüft, ob das Formular überhaupt abgesendet wurde und ob das vom Benutzer eingegebene Ergebnis stimmt. Dazu wird das vom Benutzer einggegebene Ergebnis ebenfalls in einem MD5-String gewandelt und mit dem im Formular übergebenen Vergleichsstring verglichen.
if(isset($_POST['action']) && $_POST['action'] == "mail" && isset($_POST['name']) && $_POST['name'] != "" && isset($_POST['email']) && $_POST['email'] != "" && isset($_POST['betreff']) && $_POST['betreff'] != "" && isset($_POST['nachricht']) && $_POST['nachricht'] != "" && isset($_POST['gleichung']) && md5($_POST['gleichung']) == $_POST['glloesung'] && check_mail($_POST['email']))
{
$absender = preg_replace("/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "",
$_POST['email'] );
$absender = preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",
$absender );
$name = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
$_POST['name'] );
$betreff = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
$_POST['betreff'] );
$txt = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
$_POST['nachricht'] );
mail("adresse@adresse.de","{".$_POST['betreff']."}","".$name." hat Dir eine Nachricht geschickt:\n\n".$txt."","From:".$absender."<".$absender.">");
echo "<p align=\"left\"><b>Ihre Nachricht wurde erfolgreich versandt!</b></p>";
}
//Sollte das vom Benutzer errechnete Ergebnis nicht stimmen wird folgende Meldung ausgegeben:
elseif(isset($_POST['action']) && $_POST['action'] == "mail" && md5($_POST['gleichung']) != $_POST['glloesung'])
{
echo "<p align=\"left\"><b>Sie haben nicht alle nötigen Felder ausgefüllt oder die Gleichung nicht
richtig gelöst.</p>";
$mailfrom = $_POST['email'];
$mailname = $_POST['name'];
$mailbetreff = $_POST['betreff'];
$mailnachricht = $_POST['nachricht'];
}
//Wenn die E-Mail-Adresse syntaktisch nicht korrekt ist
elseif(isset($_POST['action']) && $_POST['action'] == "mail" && !check_mail($_POST['email']))
{
echo "<p align=\"left\"><b>Ihre E-Mail-Adresse ist syntaktisch nicht korrekt.</p>";
$mailfrom = $_POST['email'];
$mailname = $_POST['name'];
$mailbetreff = $_POST['betreff'];
$mailnachricht = $_POST['nachricht'];
}
mt_srand((double)microtime() * 1000000);
$oprand = mt_rand(1,3);
switch($oprand)
{
case 1:
$gl1 = mt_rand(1,20); //Zufallszahl zwischen 1 und 20
$op = "+"; //Rechenoperator für die Ausgabe später
$gl2 = mt_rand(1,10); //Zweite Zufallszahl zwischen 1 und 10
//Anschließend wird das Ergebnis mit PHP berechnet und in einem MD5-String verwandelt. Dieser wird später im Formular zur nötigen Kontrolle übergeben.
$loesungmd5 = md5($gl1+$gl2);
break;
case 2:
//Entsprechend der ersten Operation. Das Zahlenspektrum der Zufallszahlen wurde jedoch anders gewählt.
$gl1 = mt_rand(10,30);
$op = "-";
$gl2 = mt_rand(1,$gl1);
$loesungmd5 = md5($gl1-$gl2);
break;
case 3:
//Siehe case 1 und case 2
$gl1 = mt_rand(2,10);
$op = "x";
$gl2 = mt_rand(2,6);
$loesungmd5 = md5($gl1*$gl2);
break;
}
?>
<form action="<?PHP echo $PHP_SELF; ?>" method="post">
<table border="0" width="90%">
<tr>
<td align="right"><b>Name*:</b></td>
<td><input type="text" name="name" value="<?PHP echo $mailname; ?>" size="33" /></td>
</tr>
<tr>
<td align="right"><b>Your email*:</b></td>
<td><input type="text" name="email" value="<?PHP echo $mailfrom; ?>" size="33" /></td>
</tr>
<tr>
<td align="right"><b>Subject*:</b></td>
<td><input type="text" name="betreff" value="<?PHP echo $mailbetreff; ?>" size="33" /></td>
</tr>
<tr>
<td align="right"><b>Message*:</b></td>
<td><textarea name="nachricht" rows="10" cols="40" style="font-family:Verdana, Arial, Helvetica, sans-serif;"><?PHP echo $mailnachricht; ?></textarea></td>
</tr>
<!--An dieser Stelle werden die beiden Gleichungsvariablen und der Rechenoperator via PHP ausgegeben-->
<tr>
<td align="right"><b>Spamschutz*:</b></td>
<td>Bitte lösen Sie die Gleichung: <?PHP echo $gl1." ".$op." ".$gl2; ?> = <input type="text" name="gleichung" size="4" /></td>
</tr>
<tr>
<td align="right">
<input type="hidden" name="include" value="contact" />
<input type="hidden" name="action" value="mail" />
<!--In einem "hidden-field" wird die Lösung der Gleichung als MD5-String zur späteren Überprüfung übergeben. -->
<input type="hidden" name="glloesung" value="<?PHP echo $loesungmd5; ?>" />
<input type="reset" class="input" value="Inhalte Löschen" />
</td>
<td align="right"><input type="submit" class="input" value="Abschicken" /></td>
</tr>
</table>
</form>
</body>
</html>[/PHP]
ZitatOriginal von Michel
Danke und die Johnny Cash CD kommt bestimmt...
Hör ich auch gerne
Man dankt