Probleme mit Formmailer

DoM1

Grünschnabel
Hallo,

ich möchte mich schon vorher entschuldigen falls dieses Thema schon mehrmals hier durchgekaut wurde aber ich komme absolut nicht weiter...

habe folgenden code geschrieben, es wird auch auf die verschiedenen Seiten weitergeleitet, der Haken ist allerdings, dass einfach keine E-Mail rausgeschickt wird...
PHP:
<?php

$empfaenger = "meineemail@web.de";
$betreff = "Anfrage!";

$mailtext = "
Anfrage von:
$vorname $nachname
$strasse
$plz $ort
$land
$telefon
$email

Anfrage für:
Erwachsene: $erwachsene
Kinder:     $kinder
Baby:       $baby

Anreisedatum: $anreisetag
Abreisedatum: $abreisetag

Anmerkungen:
$nachricht";

 if(empty($_POST['vorname']) || empty($_POST['nachname']) || empty($_POST['email']))  
 { 
 header("Location: danke_fehler.html"); 
 } 
 else 
 { 
 mail("$empfaenger", "$betreff", "$mailtext", "From: $email"); 
 header("Location: danke.html");

}

?>

Ich muss dazu sagen, dass ich mich erst seit gestern mit PHP beschäftige, also eigentlich noch ziemlich grün hinter den Ohren bin. Hoffe von euch kann mir jemand helfen :)
 
$empfaenger und $betreff sind oben ja definiert und immer gleich, die restlichen sind in den input statements im html quelltext der seite, sprich das sind die Formularfelder
 
Hallo DoM1,
ich gehe mal davon aus, dass du die Daten aus einem Formular per Post übergeben werden:

Versuche bitte testweise Folgendes ohne Header-Angaben:
PHP:
<?php

$empfaenger = "meineemail@web.de";
$betreff = "Anfrage!";

$mailtext = "
Anfrage von:
$vorname ".$_POST['nachname']."
$strasse
$plz $ort
$land
$telefon
$email

Anfrage für:
Erwachsene: $erwachsene
Kinder:     $kinder
Baby:       $baby

Anreisedatum: $anreisetag
Abreisedatum: $abreisetag

Anmerkungen:
$nachricht";

 if(empty($_POST['vorname']) || empty($_POST['nachname']) || empty($_POST['email']))  
 { 
 header("Location: danke_fehler.html"); 
 } 
 else 
 { 
 mail($empfaenger, $betreff, $mailtext); 
 header("Location: danke.html");

}

?>

(über die PHP-Mail-Funktion versendete Nachrichten landen in der Form gerne im Spam-Ordner - prüfe diesen daher)

Weiter musst du die Variablen noch gegen die der im POST enthaltenen tauschen, wenn bei Dir REGISTER_GLOBALS ausgeschaltet ist (was zu empfehlen ist). Ich habe das mal exemplarisch bei dem Nachnamen getan.

Grüße,
Sebastian Apprecht
 
Danke schonmal für die schnellen Antworten. Ja, die Variablen werden per POST Befehl übergeben, muss ich das was du exemplarisch gemacht hast bei jeder Variable machen? Habe grade die ganze if-Funktion rausgenommen, bekomme dennoch keine E-Mail. Weis nichtmehr weiter grade... Kann das am Webspace Provider liegen, dass die mail() einfach nicht funktioniert?
 
Ah, habs jetzt... Musste beim Webspace Provider eine Standart-E-Mail-Adresse für Scripte angeben. Trotzdem vielen Dank für die Hilfe, hättest du mir das mit den REGISTER_GLOBALS gesagt bekäm ich jetzt nur leere E-Mails :D
 
Hallo DoM1,

ja das musst du alles ändern, ich habe den Script in der untenstehenden Form mal grade bei mir ausprobiert und das funktioniert, tausche mal bitte die E-Mail-Adresse und achte auf die Ausgabe.
PHP:
<?php

$empfaenger = "meineMail@web.de";
$betreff = "Anfrage!";

$mailtext = "
Anfrage von:
". $_POST['vorname'] ." ".$_POST['nachname']."
". $_POST['strasse'] ."
" . $_POST['plz']." " . $_POST['ort'] ."
". $_POST['land'] ."
" . $_POST['telefon'] ."
" . $_POST['email'] ."

Anfrage für:
Erwachsene: " . $_POST['erwachsene'] ."
Kinder:     " . $_POST['kinder'] ."
Baby:       " . $_POST['baby'] ."

Anreisedatum: " . $_POST['anreisetag'] ."
Abreisedatum: " . $_POST['abreisetag'] ."

Anmerkungen:
" . $_POST['nachricht'];

if(mail($empfaenger, $betreff, $mailtext))
	echo "Ja ich (das Script) habe die Mail geschickt!";
else
	echo "Warum auch immer habe ich (das Script) die Mail nicht geschickt!";

?>

Grüße,
Sebastian
 
Man sollte dazu noch die übertragenen Daten escpapen, sprich von HTML-Quellcode befreien, z.B.:
PHP:
"Anfrage für:
Erwachsene: " . htmlspecialchars($_POST['erwachsene'], ENT_QUOTES);
 
Man sollte dazu noch die übertragenen Daten escpapen, sprich von HTML-Quellcode befreien, z.B.:
PHP:
"Anfrage für:
Erwachsene: " . htmlspecialchars($_POST['erwachsene'], ENT_QUOTES);

Sehr wahr, das sollte man natürlich auch tun. Genau wie die Validierung und unter Umständen mögliche Verifikation der eingegebenen Daten.

Da es allerdings eins der ersten Scripte von DoM1 ist, wollte ich an der Stelle vorerst von den Vollen absehen, da man so schnell eine Wissenschaft für sich aus den Themenbereichen machen kann.
 
Zurück