f4e Geschrieben 13. September 2007 Geschrieben 13. September 2007 hallo, ich schreibe für jemanden ein mailformular... bekommen aber immer diese doofe meldung: Notice: Undefined variable: sent in E:\WebServer\wwwroot\xxxx\xxxxx\test_mail.php on line 10..... das script ist soweit ok, denke ich mal.... ich bekomme diese meldung zum verrecken nicht weg....vielleicht bin ich einfach zu blööd dazu und sollte es sein lassen... wer kann mir helfen???? Mein system: Win2000ADS, SP4, IIs ves.5 PHP: 4.4.7 alles an pHP läuft, nur dieses schei.... Mailform nicht grüsse dieter Zitieren
Nachwuchsinformatiker Geschrieben 13. September 2007 Geschrieben 13. September 2007 Hi Poste doch mal Zeile 10 von test_mail.php. Die Fehlermeldung lässt mich vermuten das du entweder irgendwo einen Syntaxfehler hast oder eine Variable nicht/falsch deklariert worden ist (Vertippt beim Namen?). Falls das Script soweit läuft, kannst du die Meldung auch einfach mit PHP's error_reporting-Funktion ausblenden. Allerdings ist das keine 'richtige' Lösung, sondern es unterdrückt nur die Meldung. Grüße Zitieren
f4e Geschrieben 13. September 2007 Autor Geschrieben 13. September 2007 hallo, so sieht das ganze konstruckt zur zeit noch aus....... vielelicht sehe ich wirklich vor lauter bäumen den wald nicht mehr <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php //mit $sent==1 wird getestet, ob das Formular abgeschickt wurde if ($sent==1) { //Ausgabe der eingegebenen Fromulardaten echo "Anrede:<br>$anrede<br>"; echo "Ihr Vorname:<br>$vorname<br>"; echo "Ihr Nachname:<br>$nachname<br>"; echo "Ihre Anschrift:<br>$plz:,$ort,$strasse<br>"; echo "Ihre Telefon-Nr:<br>$tel<br>"; echo "Ihre Mailadresse:<br>$email<br>"; echo "Ihre Anfrage:<br>$betreff<br>"; echo "Ihre gewünschte Unterbringungart:<br>$auswahl<br>"; echo "Ihr gewünschter Buchungszeitraum:<br>$von:$bis:$jahr<br>"; echo "Anzahl der Personen:$erwachsen: Erwachsene:$kind:Kinder:$tier:Haustiere<br>"; echo "Ihre Nachricht:<br>$nachricht<br>"; // Testen ob alle Felder ausgefüllt wurden, ggf eine Fehlermeldung ausgeben und $sent löschen, damit das Formular erneut angzeigt wird if (!$vorname) {echo 'Bitte geben Sie Ihren Vornamen an!! <br>';unset ($sent);} if (!$nachname) {echo 'Bitte geben Sie Ihren Nachnamen an!! <br>';unset ($sent);} if (!$plz) {echo 'Bitte geben Sie Ihre PLZ an!! <br>';unset ($sent);} if (!$ort) {echo 'Bitte geben Sie Ihren Wohnort an!! <br>';unset ($sent);} if (!$strasse) {echo 'Bitte geben Sie Ihre Straße an!! <br>' ;unset ($sent);} if (!$tel) {echo 'Bitte geben Sie ihre Telefon-Nr. an!! <br>' ;unset ($sent);} if (!$email) {echo 'Bitte geben Sie Ihre Mail-Adresse an!! <br>' ;unset ($sent);} if (!$betreff) {echo 'Bitte geben sie den Grund Ihrer Nachricht an!! <br>' ;unset ($sent);} if (!$auswahl) {echo 'Bitte wählen Sie eine Unterbringungsart!!<br>' ;unset ($sent);} if (!$von) {echo 'Bitte geben Sie Ihren gewünschten Anreisetag an!! <br>' ;unset ($sent);} if (!$bis) {echo 'Bitte geben Sie Ihren gwünschten Abreisetag an!! <br>' ;unset ($sent);} if (!$jahr) {echo 'Bitte geben Sie das Reisejahr an!! <br>' ;unset ($sent);} if (!$erwachsen) {echo 'Bitte geben Sie die Zahl der erwachsenen Reisenden an!! <br>' ;unset ($sent);} if (!$kind) {echo 'Bitte geben Sie die Zahl der mitreisenden Kinder an!! <br>' ;unset ($sent);} if (!$tier) {echo 'Bitte geben Sie die Zahl der mitreisenden Haustiere an!! <br>' ;unset ($sent);} if (!$nachricht) {echo 'Bitte geben Sie Ihre Mitteilung an uns an!! <br>' ;unset ($sent);} //Testen, ob alle Felder ausgefüllt sind, wenn ja Mail vorbereiten und versenden if ($nachname AND $email AND $betreff AND $nachricht) { //Den Nachrichtentext für eine HTML-Mail zusammenbauen $message= "<html><body>"; $message.= "Vorname: "; $message.=$vorname; $mesaage.= "Nachmane: "; $message.=$nachname; $message.= "PLZ: "; $message.=$plz; $message.= "Ort: "; $message.=$ort; $message.= "Strasse: "; $message.=$strasse; $message.= "Tel-Nr.: "; $message.=$tel; $message.= "E-Mail: "; $message.=$email; $message.= "Betreff: "; $message.=$betreff; $message.= "Art der Unterbringung: "; $message.=$auswahl; $mesage.= "Von: "; $message.=$von; $message.= "Bis: "; $message.=$bis; $message.= "Jahr: "; $message.=$jahr; $message.= "Erwachsene: "; $mesage.=$erwachsen; $message.= "Kinder: "; $message.=$kind; $mesage.= "Haustiere: "; $mesage.=$tier; $message.= "Nachricht: "; $message.=$nachricht; $mesage.="</body></html>"; //Den Header der Mail erstellen $header="\n Content-Type:text/html"; //Die Mail versenden. Wenn kein Fehler auftritt, wird eine Erfolgsmeldung ausgegeben, andernfalls eine Fehlermeldung if(mail("admin@vf.de", "Eine Mailanfrage vom Ferienhaus-Grüneweg!!",$message, $header)) { //Erfolgsmeldung ausgeben echo "Ihre Mail wurde erfolgreich versendet!!"; } else { //Fehlermeldung ausgeben echo "Die Übertragung Ihrer Mail ist leider fehlgeschlagen. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal!!"; //$sent löschen, damit das Formular erneut angzeigt werden kann unset($sent); } }//schliessende Klammer für if($vorname AND $nachname AND....) }//schliessende Klammer für if($sent==1) //Das Formular anzeigen, wenn $sent nicht existiert.....dies kann der Fall sein, wenn die Seite zum 1.Mal aufgerufen wird oder wenn $sent oben bei einem Fehler gelöscht wird if(!$sent) { ?> <form action="<?php echo $PHP_SELF; ?>" method=post> <!-Verstecktes Feld um zu Testen, ob das Formular aufgerufen werden soll oder nicht-> <input type=hidden name=sent value=1> </form> <?php }//schliessende Klammer für if(!$sent) !!WICHTIG!!!, diese Klammer muss in einem PHP-Teil stehen!! ?> </body> </html> gruss dieter Zitieren
Nachwuchsinformatiker Geschrieben 13. September 2007 Geschrieben 13. September 2007 Hi Vermutlich stammt das Script noch aus PHP4-Zeiten. Du kannst das jetzt auf zwei Arten Lösen. 1. Stupide, funktioniert aber und sollte keine Probleme machen. Einfach über dein ganzens Script drüber machen. <?php error_reporting(0); ?>[/php] 2. Um das Problem selbst zu lösen kannst du nun auch folgendes machen, ich gehe jetzt einfach mal davon aus das dein Script per die Daten per POST weitergibt. Ändere hierzu einfach Zeile 10 in folgendes um: [php]if ($_POST['sent']==1) 2.1 Selbiges wie oben, etwas eleganter gelöst: if (isset($sent)) Keine Ahnung obs funktioniert, probiers aus Grüße Zitieren
f4e Geschrieben 13. September 2007 Autor Geschrieben 13. September 2007 Hi, danke für die beiden möglichkeiten..... die erste werde ich nicht nehmen, da ich dafür bin ein ein problem zu lösen (denke das geht allen so:D) ich habe mich für deine zweite möglichkeit endschieden.... ist zwar etwas arbeit aber ok ich habe alles was mit $sent zu tun hatte auf $_POST geändert....... die fehler meldung ist wech....super hoffe das er die mail auch abschickt.......werde ich aber dann sehn wenn es soweit ist.. ich habe deine zweite möglichkeit etwas ändern müssen, damit es passt von: if ($_POST['sent']==1) auf if ($_POST==1) ich hoffe das es passt............ danke für deine hilfe gruss dieter Zitieren
Nachwuchsinformatiker Geschrieben 13. September 2007 Geschrieben 13. September 2007 Hey Ich will meinen du könntest Probleme mit der Abfrage des Inhalts haben, wenn du das wirklich überall gemacht hast. Die Fehlermeldung mit dem $sent sollte ja immer nur dann gekommen sein, wenn die E-Mail NICHT verschickt worden ist, also wenn der Paremeter nicht übergeben worden ist. Demnach sollte es auch reichen wenn du die Methode mit dem isset benutzt und eventuell auch statt $_POST['sent'] nur $sent benutzt. PHP: Verwendung von Register Globals - Manual Grüße Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.