| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

25-07-2010, 22:15
|
|
AKSPEEDY
Registrierter Benutzer
|
|
Registriert seit: Jul 2010
Beiträge: 4
|
|
Daten aus Textfelder in HTML-E-Mail übernehmen, wie?
Guten Abend!
Auf einer Webseite kann der Kunde Daten wie Name, Adresse e.t.c. eintragen
und diese sollen dann per HTML-Mail verschickt werden.
Nur leider funktioniert das irgendwie nicht.
Hier mal der Code dazu (reservierung.php):
PHP-Code:
<?php ob_start(); $timestamp = time(); $datum = date("d.m.Y",$timestamp); $uhrzeit = date("H:i",$timestamp); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html40/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <TITLE>Ihre AUTOVERMIETUNG xyz</TITLE> </head> <BODY> <h3>Reservierung</h3> <p id="text"> Sie möchten ein Fahrzeug mieten?<br> Dann füllen Sie bitte das Formular aus und senden Sie uns Ihre Anfrage gleich ab. <br><br> <?php session_start(); // Formular mit Fehlerauswertung $errorFelder = array(); $error = null; $felder = array("Anrede", "Vorname", "Nachname", ...); // Für die Zwischenspeicherung in der Session: $_SESSION['Anrede'] = $_POST['Anrede']; $_SESSION['Vorname'] = $_POST['Vorname']; $_SESSION['Nachname'] = $_POST['Nachname']; ... // Überprüfung der eingegebenen Daten if(isset($_POST['ueberpruefung'])) { $error = false; foreach($felder as $feld) { if(empty($_POST[$feld])) { $error = true; $errorFelder[$feld] = true; } } } if($error === false) { // HTML-E-Mail an meine Adresse schicken $nachricht = " <html><head><title>Fahrzeug - Reservierung</title></head> <body> <p>Fahrzeugreservierung vom $datum um $uhrzeit Uhr</p> <b><u>Kundendaten</u></b><br> $_POST['Anrede']; $_POST['Vorname']; $_POST['Nachname']; // $_POST['Anrede']; u.s.w. funktioniert leider nicht // Nur wenn ich direkt Text eingebe, wird er übermittelt // z.B. Herr<br>Martin Mustermann<br>Hauptstr. 123<br> </body> </html> "; // für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden $header = 'MIME-Version: 1.0' . "\r\n"; $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // zusätzliche Header $header .= 'From: info@domain.de <info@domain.de>' . "\r\n"; // Betreff definieren $betreff = "Fahrzeugreservierung"; // Empfänger definieren $empfaenger = 'info@domain.de'; foreach($felder as $name) Header('Location: http://www.domain.de/reservierungsbestaetigung.php'); // E-Mail versenden mail($empfaenger, $betreff, $nachricht, $header); exit; } else { if($error === true) echo '<span style="color: #FF0000; font-size: 12; font-face: arial; font-weight: bold"> Bitte füllen Sie alle rot markierten Textfelder aus!</span>'; } ?> <br><br> </p> <!-- Beginn - Formular --> <!-- ********************** --> <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post"> <input type=hidden name="recipient" value="info@domain.de"> <input type=hidden name="subject" value="Fahrzeugreservierung"> <INPUT type=hidden name="print_blank_fields" value="1"> <input type=hidden name="redirect" value="reservierungsbestaetigung.php"> <input type=hidden name="ueberpruefung" value="1"> <p id="text"> <b>1. Kundendaten:</b><br><br> <TABLE width="90%" bgcolor="#EBEBEB" id="text"> <TR> <TD WIDTH="100" align="right"><font face="tahoma, arial, helvetia" size="2">Anrede: </font></TD> <TD> <select name="Anrede" value="<?php print htmlentities($_POST['Anrede']);?>" <?php if(isset($errorFelder['Anrede'])) echo 'class="error"'; ?>> <option INPUT SIZE="4" MAXLENGTH="4"></option> <option INPUT SIZE="4" MAXLENGTH="4">Frau</option> <option INPUT SIZE="4" MAXLENGTH="4">Herr</option> </select> </TD> </TR> <TR> <TD align="right"><font face="tahoma, arial, helvetia" size="2">Vorname: </font></TD> <TD><INPUT NAME="Vorname" SIZE="20" MAXLENGTH="30" value="<?php echo htmlentities($_POST['Vorname']);?>" <?php if(isset($errorFelder['Vorname'])) echo 'class="error"'; ?>></TD> </TR> <TR> <TD align="right"><font face="tahoma, arial, helvetia" size="2">Nachname: </font></TD> <TD><INPUT NAME="Nachname" SIZE="20" MAXLENGTH="30" value="<?php echo htmlentities($_POST['Nachname']);?>" <?php if(isset($errorFelder['Nachname'])) echo 'class="error"'; ?>></TD> </TR> ... </table> <TABLE width="90%" id="text"> <TR> <TD width="100"></TD> <TD><INPUT TYPE="submit" VALUE="Reservierung absenden"></TD> </TR> </table> <br> </FORM> </table></font> <! -- Ende - Formular --> </p> </BODY> </HTML>
Es wird zwar eine HTML-E-Mail übertragen, aber die eingegeben Daten des Kunden werden nicht angezeigt.
Kann mir einer verraten warum nicht?
Und so sieht dann die HTMl-Mail aus:
Fahrzeugreservierung vom 25.07.2010 um 21:23 Uhr
Kundendaten
Herr
Martin Mustermann
Hauptstr. 123
12345 Musterstadt
u.s.w.
Gruß AKSPEEDY
Geändert von AKSPEEDY (26-07-2010 um 01:59 Uhr)
Grund: Code wurde umgebrochen
|

25-07-2010, 22:19
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Regeln lesen, Code umbrechen!
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

26-07-2010, 02:02
|
|
AKSPEEDY
Registrierter Benutzer
|
|
Registriert seit: Jul 2010
Beiträge: 4
|
|
Zitat:
Zitat von wahsaga
|
Sorry, ich hoffe, so ist es lesbarer.
:-)
|

26-07-2010, 06:21
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
Zitat:
Zitat von AKSPEEDY
Guten Abend!
PHP-Code:
<?php
ob_start();
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html40/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<TITLE>Ihre AUTOVERMIETUNG xyz</TITLE>
</head>
<BODY>
<h3>Reservierung</h3>
<p id="text">
Sie möchten ein Fahrzeug mieten?<br>
Dann füllen Sie bitte das Formular aus und senden Sie uns Ihre Anfrage gleich ab.
<br><br>
<?php session_start(); // DAS HIER SOLL EIGENTLICH IMMER GANZ OBEN STEHEN ...
// Formular mit Fehlerauswertung
$errorFelder = array();
$error = null;
$felder = array("Anrede", "Vorname", "Nachname", ...);
// Für die Zwischenspeicherung in der Session:
$_SESSION['Anrede'] = $_POST['Anrede'];
$_SESSION['Vorname'] = $_POST['Vorname'];
$_SESSION['Nachname'] = $_POST['Nachname'];
...
// Überprüfung der eingegebenen Daten
if(isset($_POST['ueberpruefung']))
{
$error = false;
foreach($felder as $feld)
{
if(empty($_POST[$feld]))
{
$error = true;
$errorFelder[$feld] = true;
}
}
}
if($error === false)
{
// HTML-E-Mail an meine Adresse schicken
$nachricht = "
<html><head><title>Fahrzeug - Reservierung</title></head>
<body>
<p>Fahrzeugreservierung vom $datum um $uhrzeit Uhr</p>
<b><u>Kundendaten</u></b><br>
$_POST['Anrede']; $_POST['Vorname']; $_POST['Nachname'];
// $_POST['Anrede']; u.s.w. funktioniert leider nicht
// Nur wenn ich direkt Text eingebe, wird er übermittelt
// z.B. Herr<br>Martin Mustermann<br>Hauptstr. 123<br>
|
... ja warum wohl ... benutz doch mal die richtige Schreibweise, um den Text deiner Email zusammenzusetzen ..
PHP-Code:
Text= "BlaText<br>".$_POST['Anrede']."<br>".$_POST['Vorname']." ".$_POST['Nachname']."<br>";
Text.=$_POST['Strasse']."<br>".$_POST['PLZ']." ".$_POST['Ort']."<br> BlaText fortsetzen";
und eigentlich solltest du das bei Datum und Uhrzeit der Fahrzeugreservierung genauso machen .. es ist eine immer wiederkehrende Fehlerquelle, wenn du du den String nicht mit den "."-Operator zusammensetzt, sondern dich darauf verlässt, das PHP das schon hinbiegen wird...
Im übrigen hab ich mal gelernt, dass man für Strings, die HTML enthalten nur den Apostroph benutzen soll (damit man in den Html-Tags die Attribute vernünftig schreiben kann) - dann würde deine Methode gar nicht mehr funktionieren, weil PHP nur in "normalen" Gänsefüßchen automatisch ersetzt
Außerdem könnte ich mir vorstellen, dass einige andere regelmäßige Poster hier schon ne Gänsehaut unter den Fußsohlen haben wegen HTML-Tabellen fürs Layout - aber dazu sag ich mal nix ....
Und session_start(); soll der allererste Befehl deines Scriptes sein ... also pflanz das mal vor(!) ob_start();
__________________
Wer LESEN kann, ist klar im Vorteil!
Geändert von eagle275 (26-07-2010 um 06:25 Uhr)
|

26-07-2010, 06:33
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
PHP-Code:
<input type=hidden name="recipient" value="info@domain.de">
ich hoffe das ist nur ein Kopier-Fehler ...
HTML-Code:
<input type="hidden" name="recipient" value="info@domain.de">
PHP-Code:
<INPUT NAME="Vorname" SIZE="20" MAXLENGTH="30" value="<?php echo htmlentities($_POST['Vorname']);?>"
und was ist das für ein Feld?
HTML-Code:
<input type="text" name="Vorname" size="20" maxlength="30" value=.......>
das gleiche nochmal beim Nachnamen und vermutlich auch bei strasse und co ....
und überhaupt .. warum schreibst du soviel in Großbuchstaben .. HTML wird bevorzugt in klein geschrieben (die Tags und Attribute) .....*duck*
sorry für Doppelpost -
__________________
Wer LESEN kann, ist klar im Vorteil!
|

26-07-2010, 16:58
|
|
AKSPEEDY
Registrierter Benutzer
|
|
Registriert seit: Jul 2010
Beiträge: 4
|
|
Hallo eagle275!
Danke für die Hinweise!
Die Schusseligkeitsfehler wurden korrigiert.
Bei der HTMl-Mail bekomme ich diese Fehlermeldung:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/web2/30/85/xxx/htdocs/reservierung_neu.php on line 170
Line170: Text= "BlaText<br>".$_POST['Anrede']."<br>".$_POST['Vorname']." ".$_POST['Nachname']."<br>";
Schreibe ich aber:
// HTML-E-Mail an meine Adresse schicken
$ nachricht = "
...
< b >< u >Kundendaten</ u ></ b >< br >
Herr< br >
Max Mustermann< br >
(Leerzeichen in den TAGS natürlich weggedacht)
funktioniert es.
Komisch.
|

26-07-2010, 18:47
|
|
sili
Registrierter Benutzer
|
|
Registriert seit: Feb 2004
Beiträge: 115
|
|
Bei der Variable "Text" fehlt das Dollarzeichen.
|

26-07-2010, 20:20
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
ups .. muss ich wohl übersehen haben ....
ich hab das allerdings kurz zwischen Aufstehen und Duschen getippt ..
__________________
Wer LESEN kann, ist klar im Vorteil!
|

26-07-2010, 22:31
|
|
AKSPEEDY
Registrierter Benutzer
|
|
Registriert seit: Jul 2010
Beiträge: 4
|
|
So gehts ...
// HTML-E-Mail an meine Adresse schicken
$nachricht = "
<html><head><title>Fahrzeug - Reservierung</title></head>
<body>
<p><b>Fahrzeugreservierung</b> vom <b>$datum</b> um <i>$uhrzeit</i> Uhr</p>
<p>
<b><u>Kundendaten</u></b><br>
".$_POST['Anrede']."<br>
".$_POST['Vorname']." ".$_POST['Nachname']."<br>
...
Gruß AKSPEEDY
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|