Php-kontaktformular
#1
geschrieben 21. Juni 2006 - 19:19
ich bin totaler PHP-Programmier-Neuling, und leider sind im moment die finanziellen Möglichkeiten nicht da, um ein Buch von Gallielocomputing o.ä. zu kaufen, da diese Qualitätsbücher teuer sind. Da ich jetzt meine Homepage (fast) fertiggestellt habe (FrontPage 2003) bräuchte ich jetzt jedoch ein Kontaktformular. Es soll folgende Felder haben:
Name (Pflichteingabe):
E-Mail Adresse (Pflichteingabe):
Nachricht:
Die Nachricht soll an [email protected] weitergeleitet werden.
Vielleicht könnte jemand den PHP-Code posten.
Vielen Dank!
Gruß
hannesh
Anzeige
#2
geschrieben 21. Juni 2006 - 19:37
formular.html (das ganz normale Formular, wo der User die Sachen eingeben soll!)
<form action="schicken.php" method="post"> Name: <input type="text" name="name" /><br /><br /> eMail: <input type="text" name="email" /><br /><br /> Nachricht: <input type="text" name="nachricht" /><br /><br /> <input type="submit" name="Senden" /> </form>
schicken.php
<?php if(empty($_POST['name']) || empty($_POST['email'])) { echo "Bitte fülle alle notwendigen (Name und eMail-Adresse) aus!"; } else { $mail_empfaenger="[email protected]"; $mail_absender=$_POST['email']; $betreff="(!!!BITTE NOCH ANPASSEN!!!)"; $text=$_POST['nachricht']; mail($mail_empfaenger, $betreff, $text,"from:$mail_absender"); } ?>
Wie oben geschrieben sind diese Angaben ohne Gewähr!
Ich hoffe, dass sich kein Fehler eingeschlichen hat, denn ich kann noch nicht so gut PHP programmieren
Wenn es dennoch Fehler haben sollte, entschuldige ich mich jetzt schon...
EDIT:\\ formular.html wurde noch bearbeitet.. wegen dem Aussehen
EDIT2:\\ irgendwie funzt der Absenden-Code noch nicht..
Was würde an folgendem Code nicht stimmen?
if(empty($_POST['name']) || empty($_POST['email'])) { echo "Bitte fülle alle notwendigen (Name und eMail-Adresse) aus!"; } else { $mail_empfaenger="[email protected]"; $mail_absender=$_POST['email']; $betreff="(!!!BITTE NOCH ANPASSEN!!!)"; $text=$_POST['nachricht']; $kopf = "[KONTAKT]E-Mail von ".$_POST['name']." (".$_POST['email'].")"; $nachricht = $_POST['name']." (".$mail_absender.") schrieb:\n\nBetreff: ".$betreff."\nText: ".$text; if(mail($empfaenger, $kopf, $nachricht, "From: ".$mail_absender)) { echo "E-Mail erfolgreich versandt."; } else { echo "Fehler beim Versenden der E-Mail.";} }
Dieser Beitrag wurde von NightTiger bearbeitet: 22. Juni 2006 - 21:38
#3
geschrieben 21. Juni 2006 - 19:53
Könnte man bei der Nachricht vielleicht ein mehrzeiliges Eingabefeld einfügen?
Gruß
#4
geschrieben 21. Juni 2006 - 19:55
Ersetze
<input type="text" name="nachricht" />
mit
<textarea name="nachricht" cols="40" rows="5"></textarea>
PS: Siehe EDIT 2 von mir
#5
geschrieben 21. Juni 2006 - 20:19
Leider besteht das Problem aus Edit2 immer noch, und ich würde mich sehr darüber freuen, wenn einer eine Lösung wüsste. Vielen Dank!
#6
geschrieben 21. Juni 2006 - 20:32
Naja, ich bin halt noch kein Profi.. Und kein Mensch ist perfekt
#7
geschrieben 21. Juni 2006 - 20:33
so auf den ersten Blick:
Im Aufruf von mail(...) benutzt du $empfaenger, müsste aber $mail_empfaenger sein.
Vor EDIT2 war das sogar noch richtig
Evtl. hat auch der Hoster, bei dem ihr das Skript laufen lasst die mail()-Funktion deaktiviert. Welche Fehlermeldung kommt denn?
#8
geschrieben 21. Juni 2006 - 20:40
#9
geschrieben 21. Juni 2006 - 20:54
Der Inhalt der .php-Datei wird angezeigt? Hast du vielleicht die <?php und ?> Tags am Anfang und am Ende der Datei vergessen?
#10
geschrieben 21. Juni 2006 - 20:59
#11
geschrieben 21. Juni 2006 - 21:01
Hier der endgültige Code (getestet!):
formular.html
<form action="schicken.php" method="post"> Name: <input type="text" name="name" /><br /><br /> eMail: <input type="text" name="email" /><br /><br /> Nachricht: <textarea name="nachricht" cols="40" rows="5"></textarea><br /><br /> <input type="submit" name="Senden" /> </form>
schicken.php
<?php if(empty($_POST['name']) || empty($_POST['email'])) { echo "Bitte fülle alle notwendigen (Name und eMail-Adresse) aus!"; } else { $mail_empfaenger="[email protected]; $mail_absender=$_POST['email']; $betreff="(!!!BITTE NOCH ANPASSEN!!!)"; $text=$_POST['nachricht']; $nachricht = $_POST['name']." (".$mail_absender.") schrieb:\n\nBetreff: ".$betreff."\nText: ".$text; if(mail($mail_empfaenger, $betreff, $nachricht, "From: ".$mail_absender)) { echo "E-Mail erfolgreich versandt."; } else { echo "Fehler beim Versenden der E-Mail.";} } ?>
Müsste so nun wirklich funktionieren!
Bei Fragen bitte einfach schreiben!
@MNG
Danke, hab das echt nicht gesehen
EDIT:\\
Zitat
Unterstützt dein Server überhaupt PHP?
EDIT:\\
Immer diese **** Edits von mir.. Sorry.. Hab jetzt noch die $kopf-Variable weggenommen und in mail() durch $betreff ersetzt.. Wir wollen ja nicht überflüssigen Code, oder?
Dieser Beitrag wurde von NightTiger bearbeitet: 22. Juni 2006 - 21:39
#12
geschrieben 21. Juni 2006 - 21:23
#14
geschrieben 22. Juni 2006 - 14:05
Hier eins von mir. Ich hab's verbessert
Features:
• Einschränkung der Eingabe auf eine bestimmten Anzahl von Zeichen (Schutz vor spamming - veränder bar bei [maxlength="X"])
• Voreingabe (Name & eMail steht schon da. Beim daraufklicken verschwindet die Eingabe und der User kann seine Daten eingeben)
• Prüfen der eMailadresse auf Gültigkeit in Form von [email protected]|com|net|... (Ob es die von User eingegebene eMailadresse wirklich gibt ist eine andere Frage.)
• Betreff einstellbar ^^
• eMailadresse & Name zusammengefasst ~> [Von: Sender <eMailadresse>]
• etc.
Hab ich noch nicht getestet aber müsst eigentlich funtzen
Eingabe:
<form method="POST" action="mail.php"> Name:<br> <input typ="text" name="name" VALUE="Name" onBlur="if (value =='') {value = 'Name'}" onFocus="if (value == 'Name') {value =''}" maxlength="50"> <br><br> eMail:<br> <input typ="text" name="email" VALUE="[email protected]" onBlur="if (value =='') {value = '[email protected]'}" onFocus="if (value == '[email protected]') {value =''}" maxlength="50"> <br><br> Nachricht:<br> <textarea cols="40" rows="7" name="nachricht" maxlength="780"></textarea> <br><br> <input type="submit" value="Abschicken"> </form>
mail.php
<?php if($_POST['nachricht']=="" | $_POST['name']=="Name" | $_POST['email']=="[email protected]" ) { echo 'Bitte tragen sie ihren Namen, eMail, Nachricht ein!'; exit; } $empaenger = "[email protected]"; $betreff = "eMail für dich!"; $sender = $_POST['name']; $sendermail = $_POST['email']; $valid = "^[_\.0-9a-z-]+@([0-9a-z][0-9a-z]+\.)+[a-z]{2,4}$"; if(eregi($valid,$sendermail)) { $senden; } else { echo 'Bitte geben Sie eine gültige eMailadresse an!'; exit; } $text = "\n\n" . $sender . "schreibt:\n\n\n" . $_POST['nachricht'] .""; $from = "From: $sender < $sendermail >"; $senden = mail($empaenger, $betreff, $text, $from); if($senden) { echo 'Danke '.$sender.'!<br>Ihre eMail wurde gesendet!'; } else { echo 'Es ist ein Fehler beim senden der eMail aufgetretten!'; } ?>
Dieser Beitrag wurde von keny bearbeitet: 22. Juni 2006 - 14:07
Zitat
Spritify! Easy CSS-Sprite-Generator | Albanisch Deutsch Wörterbuch
#15
geschrieben 22. Juni 2006 - 14:29
Kann ich es auch so einstellen, das anstatt "Die Mail wurde versandt!" bzw. "Mail nicht erfolgreich gesendet!" eine HTML-Datei im gleichen Fenster geöffnet wird?
Dieser Beitrag wurde von hannesh bearbeitet: 22. Juni 2006 - 14:30
- ← Seitenleisten Bis Ganz Nach Unten Zum Footer?
- Skript/Web-Programmierung
- Brauche Hilfe Bei Batch-datei →