ich habe ein Problem mit dem Script.
Bei mir wird die Datei "email.php" mittels <iframe> in die "kontakt.htm" eingebunden.
email.php :
- Code: Alles auswählen
<? session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Email</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="archiv.css" rel="stylesheet" type="text/css">
</head>
<body leftmargin="0" topmargin="0" oncontextmenu="return false" oncontext="return false" onselectstart="return false">
<?
// Übernahme der Daten aus den Formular
if ($_POST["submit"]) {
// Variablen der Datenfelder
$name = $_POST["name"];
$email = $_POST["email"];
$text = $_POST["text"];
// 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("^[a-za-zäöüß ]+$", $name)) {
$fehler['name'] = "Name fehlt<br><br>";
}
if (!eregi("^[0-9a-z_.-]+@[0-9a-z.-]+\.[a-z]{2,6}$", $email)) {
$fehler['email'] = "Email fehlt<br><br>";
}
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
$fehler['sicherheitscode'] = "Der Sicherheitscode ist falsch</br>";
}
else {
if (!eregi("^[0-9]+$", $_POST["sicherheitscode"])) {
$fehler['sicherheitscode'] = "Sicherheitscode fehlt</br>";
}
}
// Ausgabe der Fehler wird weiter unten ausgegeben (assoziatives Array)
// wenn kein Fehler, wird eine E-Mail versendet
if (!isset($fehler)) {
// Kopf der E-Mail
$recipient = "xxxxx@xxx.at"; // Empfänger der Nachricht
$subject = "Email - Nachricht"; // Betreff der Nachricht
$mailheaders = "From: \"".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 Online-Formular gesendet:\n" . "-------------------------------------------------------------------------\n\n";
$msg .= "Name: " . $name . "\n";
$msg .= "E-Mail: " . $email . "\n";
$msg .= "\nNachricht:\n " . $text . "\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,
session_unset();
print " <p> </p>
<p class=kursiv>Das Emailformular wurde erfolgreich gesendet!</p>
<p><form action=email.php><input class=form_button type=submit value=\" Zurück \" name=return></form></p>";
exit; // mit exit wird nun das Script nach Versand angehalten, so dass das Formular nicht erneut kommt!
}
}
}
?>
<form action="<?=$_SERVER["PHP_SELF"];?>" method="POST">
<table width="600" height="150" border="0" cellpadding="0" cellspacing="2" bordercolor="#F0F0FF">
<tr>
<td height="17" width="130" class="kursiv">Emailformular</td>
<td width="8" bgcolor="#508296"> </td>
<td colspan="3"> = Pflichtfelder</td>
</tr>
<tr>
<td colspan="5"><img src="img/transpixel.gif" height="3"></td>
</tr>
<tr>
<td width="130" height="25" bgcolor="#D2D2D2" align="right">Name </td>
<td width="8" bgcolor="#508296"> </td>
<td colspan="2"><input type="text" class="form_textfeld" name="name" size="45" value="<?=htmlentities(stripslashes($_POST["name"]), ENT_QUOTES);?>"></td>
<td width="170" rowspan="4" valign="top">
<? if (is_array($fehler)) {
echo "<p><b><i>Eingabefehler!</i></br></br>";
foreach ($fehler as $feldname => $wert) {
print $wert;
}
print "</b></p>";
}
?>
</td>
</tr>
<tr>
<td width="130" height="25" bgcolor="#D2D2D2" align="right">Email </td>
<td width="8" bgcolor="#508296"> </td>
<td colspan="2"><input type="text" class="form_textfeld" name="email" size="45" value="<?=htmlentities(stripslashes($_POST["email"]), ENT_QUOTES);?>"></td>
</tr>
<tr>
<td width="130" height="40" bgcolor="#D2D2D2" align="right">Nachricht </td>
<td width="8"> </td>
<td colspan="2"><textarea class="form_textfeld" name="text" rows="3" cols="47"><?=htmlentities(stripslashes($_POST["text"]), ENT_QUOTES);?></textarea></td>
</tr>
<tr>
<td width="130" height="30" bgcolor="#D2D2D2" align="right">Code wiederholen </td>
<td width="8" bgcolor="#508296"> </td>
<td width="170"><input type="text" class="form_textfeld" name="sicherheitscode" size="1" maxlength="4">
<img src="captcha/captcha.php" border="0" align="absmiddle" alt="Sicherheitscode"></td>
<td>
<input class="form_button" name="submit" type="submit" value=" Absenden ">
</td>
</tr>
</table>
</form>
</body>
</html>
Die Datei captcha/captcha.php sieht wie folgt aus:
- Code: Alles auswählen
<?php
session_start();
unset($_SESSION['captcha_spam']);
$text = rand(1000,10000); //Zufallszahl
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);
}
$_SESSION['captcha_spam'] = encrypt($text, "693840a67"); //Key
$_SESSION['captcha_spam'] = str_replace("=", "", $_SESSION['captcha_spam']);
header('Content-type: image/png');
$img = ImageCreateFromPNG('captcha.png'); //Backgroundimage
$color = ImageColorAllocate($img, 0, 0, 0); //Farbe
$ttf = $_SERVER['Document_Root']."arial.ttf"; //Schriftart
$ttfsize = 25; //Schriftgrösse
$angle = rand(0,5);
$t_x = rand(5,50);
$t_y = 35;
imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text);
imagepng($img);
imagedestroy($img);
?>
Das Problem ist,
1) wenn ich keinen Code eingebe schreibt er zwar "Sicherheitscode fehlt" aber generiert mir keinen neuen.
2) wenn ich einen falschen Code (oder auch den richtigen) eingebe, wird gesendet.
Ich weiß nicht ob die "kontakt.htm" auch wichtig ist.
kontakt.htm :
- Code: Alles auswählen
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Kontakt</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="archiv.css" rel="stylesheet" type="text/css">
</head>
<body oncontextmenu="return false" oncontext="return false" onselectstart="return false">
<h3>Kontakt</h3>
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%"><p class="block>Adresse 1</p></td>
<td width="50%"><p class="block>Adresse 2</p></td>
</tr>
</table>
<div id="Layer1" style="position:absolute; left:20px; top:122px; width:600; height:195; z-index:1">
<iframe name="email" src="email.php" height="195" width="600" frameborder="0"></iframe></div>
<br>
</body>
</html>
Ich probiere schon 3 Tage mittels Beiträgen aus diesen Forum aber ich komm nicht drauf.
Ich danke schon in voraus.
lg Kathi
