| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
katarina
Anmeldedatum: 25.08.2007 Beiträge: 3
|
Verfasst am: 26.08.2007, 06:10 Titel: Hilfe, ich stehe an! |
|
|
Hallo Forum,
ich habe ein Problem mit dem Script.
Bei mir wird die Datei "email.php" mittels <iframe> in die "kontakt.htm" eingebunden.
email.php :
Code:
<? 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:
<?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:
<!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 |
|
| Nach oben |
|
 |
Steef389
Anmeldedatum: 20.06.2007 Beiträge: 57
|
Verfasst am: 26.08.2007, 15:53 Titel: |
|
|
Probier mal statt
Code: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>";
}
}
Das aus:
Code:
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);
}
if (!isset($_POST["sicherheitscode"]) || (encrypt($_POST["sicherheitscode"], "693840a67") != $_SESSION['captcha_spam'] ) {
$fehler['sicherheitscode'] = "Der Sicherheitscode ist falsch</br>";
}
Sollte funktionieren.
Wenn nicht schreib es. |
|
| Nach oben |
|
 |
katarina
Anmeldedatum: 25.08.2007 Beiträge: 3
|
Verfasst am: 26.08.2007, 16:58 Titel: |
|
|
Hallo Steef, danke erstmal für die Antwort.
Ich habe es schon soweit geschafft (ich habe nur mehr ein "iframe") wenn ich die Seite "email.php" alleine aufrufe funktioniert alles gut, sowie ich die Seite "email.php" im "iframe" aufrufe, werden keine neuen Captcha erstellt und ich bekomme nur die Antwort "Der Sicherheitscode ist falsch". Egal ob ich den richtigen oder den falschen Code eingebe. :roll:
Vielleicht weiß da ja jemand bescheid.
lg kathi |
|
| Nach oben |
|
 |
katarina
Anmeldedatum: 25.08.2007 Beiträge: 3
|
Verfasst am: 26.08.2007, 17:49 Titel: |
|
|
Ach ja , der afktuelle Code der "email.php":
Code:
<? session_start();?>
<!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>
<h3>Kontakt h3>
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">Adresse 1</td>
<td width="50%">Adresse 2</td>
</tr>
</table>
<?
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"], "159a357");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
// Ü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 (!eregi("^[0-9]+$", $sicherheitscode)) {
$fehler['sicherheitscode'] = "Sicherheitscode fehlt<br><br>";
}
else {
if($sicherheits_eingabe != $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);
$fehler['captcha'] = "Sicherheitscode<br>war nicht korrekt!<br>";
}
}
// wenn kein Fehler, wird eine E-Mail versendet
if (!isset($fehler)) {
// Kopf der E-Mail
$recipient = "xxx@xx"; // 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>
|
|
| Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. You can attach files in this forum You can download files in this forum
|
|