Versandsbestätigung (Kontakt) auf derselben SeiteForum » Tutorials » Help » Versandsbestätigung (Kontakt) auf derselben Seite
-
03.02.2013 um 19:11 Uhr
Guten Abend!
Bevor ich nun aber ganz vom PC verschwinde, mchte ich hier schonmal eine Fragestellung aufgeben:
Wie schaffe ich es, eine Versandsbesttigung ins Kontaktformular einzubauen, ohne ein neues Fenster mit einzubauen?
Ich stelle mir das so vor, dass sich beim Versand die Eingabefelder wieder leeren und gleichzeitig ber den Eingabefeldern ein Satz erscheint, wie zB.: "Deine Nachricht wurde erfolgreich versendet!"
Liebe Gre
Naomi
-
03.02.2013 um 20:31 Uhr
Hey,
wie sieht denn dein Kontaktformular bis dato aus?
So in etwa koennte man sowas umsetzten:
//mailfunktion: $senden = mail($email, $betreff, $nachricht,"From: $abs_email"); // Nachricht verschicken if($senden){ // Wenn die Mail versandt wurde, dann Text ausgeben echo "Deine Nachricht wurde erfolgreich versendet!"; }
Oder aber so in der Art, gleich mit einer Fehlermeldung, wenn die Nachricht nicht verschickt wurde:
//mailfunktion: if( mail($email, $betreff, $nachricht,"From: $abs_email") ){ // Nachricht verschicken, wenn die Mail versandt wurde, dann Text ausgeben echo "Deine Nachricht wurde erfolgreich versendet!"; }else{ echo "Es ist ein Fehler aufgetreten, die Nachricht wurde nicht versandt!"; }
Liebe Gruesse
Alice... { signatur } ... -
03.02.2013 um 20:37 Uhr
Uiii das ging ja wieder schnell
So sieht es momentan aus: niora.pf-control.de/kontakt.php
Edit: Und hier der Code:
(Im Anpassen bin ich da leider nicht so gut. Die Funktionen oben werden entweder ignoriert oder beien sich mit anderen "else"-Begriffen)
<?php $Empfaenger = "naomi.oelker@gmail.com"; if($_REQUEST['submit']){ if(empty($_REQUEST['name']) || empty($_REQUEST['email']) || empty($_REQUEST['text'])) { echo"Bitte gehe <a href=\"javascript:history.back();\"> zurück</a> und fülle alle Felder aus!"; } else{ $Mailnachricht="Du hast eine neue Kontaktaufnahme erhalten:\n\n"; while(list($Formularfeld, $Wert)=each($_REQUEST)) { if($Formularfeld!="submit") { $Mailnachricht .= $Formularfeld.": ".$Wert."\n"; } } $Mailnachricht .= "\nDatum/Zeit: "; $Mailnachricht .= date("d.m.Y H:i:s"); $Mailbetreff = "Kontaktformular Joy-Farrell"; $Mailbetreff .= $_REQUEST['Betreff']; mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: " .$_REQUEST['email']); echo "Deine Kontaktaufnahme war erfolgreich: \n".$Mailnachricht; } } else { echo"Ein Fehler ist aufgetreten. Bitte gehe auf diese <a href=\"kontakt.php\">Seite</a>."; } ?>
Der Beitrag wurde insgesamt 2 mal editiert, zuletzt 04.02.2013 um 09:54 Uhr ... -
08.02.2013 um 12:29 Uhr
Sooo ... Die Funktionen, die du mir reingestellt hast, sind mehr oder weniger schon in meinem Script vorhanden. Nur hat sich das nicht so gelst, dass sich alles auf der selben Seite abspielt. Habe auch versucht, mich am Gstebuch zu orientieren, wie es so geklappt hat. Aber bin leider nicht drauf gekommen^^
Dann habe ich berlegt und berlegt und mir ist aufgefallen, dass fr die Besttigung "kontaktformular.php" geffnet wird, und es nicht bei der Startseite "kontakt.php" bleibt. Da ich auf "kontaktformular.php" kein Design habe (alles wei), habe ich einfach mal ausprobiert, das Script von "kontakt.php" in "kontaktformular.php" zu kopieren und den bestehenden Code von "kontaktformular.php" an der Stelle einzufgen, wo spter die "Deine Nachricht wurde erfolgreich versendet!"-Nachricht erscheinen soll. Und siehe da: Voil - Geklappt!
Jetzt ist aber folgendes Problem aufgetreten:
echo"<i>Deine Nachricht wurde erfolgreich versendet!</i>";
wird gleich 4 Mal angezeigt:
Vorher wurde beim Abschicken direkt noch mit angezeigt, welche Nachricht man unter welchem Namen etc. verschickt hat. Kann es sein, dass diese "unausgefllten" Felder so ersetzt bzw. trotzdem ausgefhrt werden?
Wie bekomme ich es hin, dass diese Nachricht nur einmal angezeigt wird?
Hier mein Code:
<?php $Empfaenger = "naomi.oelker@gmail.com"; if($_REQUEST['submit']){ if(empty($_REQUEST['name']) || empty($_REQUEST['email']) || empty($_REQUEST['text'])) { echo"Bitte <i> fülle alle Felder aus!</i>"; } else{ $Mailnachricht="Du hast eine neue Kontaktaufnahme erhalten:\n\n"; while(list($Formularfeld, $Wert)=each($_REQUEST)) { if($Formularfeld!="submit") { $Mailnachricht .= $Formularfeld.": ".$Wert."\n"; echo"<i>Deine Nachricht wurde erfolgreich versendet!</i>"; } } $Mailnachricht .= "\nDatum/Zeit: "; $Mailnachricht .= date("d.m.Y H:i:s"); $Mailbetreff = "Kontaktformular Joy-Farrell"; $Mailbetreff .= $_REQUEST['Betreff']; mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: " .$_REQUEST['email']);} } else { echo"<i>Ein Fehler ist aufgetreten. Bitte versuche es erneut!.</i>"; } ?>
-
09.02.2013 um 18:49 Uhr
Usereingaben, NIEMALS ungefiltert verarbeiten, da oeffnest du sonst Tuer und Tor fuer Leute, die dein Formular missbrauchen koennten!
Dein Fehler ist in der While Schleife begraben, bei jedem Feld, welches die Schleife erfolgreich durchlaeuft wird die Nachricht ausgegeben!
Versuch es mal damit:
<?php if($_POST['submit']){ if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['text'])){ echo"Bitte <i> fülle alle Felder aus!</i>"; }else{ $Mailnachricht ="Du hast eine neue Kontaktaufnahme erhalten:\n\n"; while(list($Formularfeld, $Wert)=each($_POST)){ if($Formularfeld!="submit"){ $Mailnachricht .= $Formularfeld.": ".$Wert."\n"; } } $Mailnachricht .= "\nDatum/Zeit: "; $Mailnachricht .= date("d.m.Y H:i:s"); $Mailbetreff = "Kontaktformular Joy-Farrell"; $Mailbetreff .= $_POST['Betreff']; // Email Versenden => Nachricht ausgeben! if(mail("naomi.oelker@gmail.com", htmlspecialchars($Mailbetreff), htmlspecialchars($Mailnachricht), "From: ".htmlspecialchars($_POST['email']))){ echo"<i>Deine Nachricht wurde erfolgreich versendet!</i>"; }else{ echo"<i>Ein Fehler ist aufgetreten. Bitte versuche es erneut!.</i>"; } }// close else }//close submit ?>
... { signatur } ... -
09.02.2013 um 19:01 Uhr
Uiiii es klappt, es klappt! *freu*
Welche Usereingaben meinst du genau?
-
09.02.2013 um 19:09 Uhr
ALLES was vom User kommt, sprich alle Formularfelder, oder aber Variablen, welche per URL uebergeben werden, sollten vor der eigentlichen Verwendung auf ihre Korrektheit/Plausibilitaet ueberprueft werden.
Z.B. wenn eine Variable NUR aus Zahlen bestehen sollte,
dann sollte darauf geachtet werden, dass auch nur Zahlen zulaessig sind und nix anderes.
Die EmailAdresse auch wirklich eine EmailAdresse ist, usw. ...... { signatur } ... -
09.02.2013 um 19:17 Uhr
Ach sooo ist das gemeint Alles klar, ich werde es mir merken! Ich hre nur immer auf, sobald es funktioniert. Noch habe ich es nicht raus, was alles genau in so einem Code gepackt werden muss^^
Vielen Dank dir!