Kontaktformular Tutorial
-
-
Okay. Wusste ich bisher noch nicht.
Danke der Info. Wieder was dazugelernt
-
DANKE, endlich mal ein Tut. bei dem einem nicht nach 1 Minute schon der Kopf raucht und man nur noch Bahnhof versteht! Ich versuche seit ca. 2 Monaten mir selber PHP anzueignen um auf meinen Webseiten anständige Kontakt- und andere Formulare abgeben zu können. Habe mir fast alle Video auf YT angeschaut und schon einen kleinen Kurs mitgemacht. Leider sind die "Lehrer" beim Kontaktformular immer wieder davongetanzt und haben dann z. B. ein Log-In gezeigt. Mal eine Frage an diese "Lehrer": Könnt ihr nicht einfach sagen so macht man das. Nein, da geht es einem eher wie früher in der Schule, Rechnen mit 5 Unbekannten - kein Problem; einfacher 3-Satz - "6, setzen".
Also einfach nochmal Danke für dieses sehr gut erklärte und klar definierte Tutorial. Jetzt versteh selbst ich es, glaube ich :-))
-
Hallo Ihr Könner,
leider blick ich doch nicht durch. Bin wohl doch eher der html-Schmieder.
Könnt ihr mir bitte sagen wo ich meine Empfänger-Addi eintragen muss. Ich hab schon so viel ausprobiert, mir raucht der Kopf. Leider komme ich mit php überhaupt nicht klar. Das sind alles bömische Dörfer. Ich brauche es aber für Kontakt und andere Formulare. Oder könnt ihr mir etwas empfehlen wo ich es leicht erlernen kann? Möchte meine Webseite endlich mit einem anständigen Formular ausstatten.
Vielen Dank im Voraus.
Britta
-
Hey,
das ist in dem Tutorial eigentlich gut beschrieben.
Schau mal:
PHP
Alles anzeigenif (count($errors) === 0) { $mailer = new PHPMailer(); $mailer->CharSet = 'UTF-8'; // Charset setzen (für richtige Darstellung von Sonderzeichen/Umlauten) $mailer->setFrom($email, $name); // Absenderemail und -name setzen $mailer->addAddress($receiver); // --> Empfängeradresse <-- $mailer->isHTML(true); $mailer->Subject = 'Neue Nachricht vom Kontaktformular'; // Betreff der Email $mailer->Body = '<h3>Neue Nachricht von: ' . $name . '</h3> <h4>E-Mail-Adresse: ' . $email . '</h4> <h2>Betreff: ' . $subject . '</h2> <p>' . nl2br($message) . '</p>'; // Inhalt der Email /** * Überprüfung, ob Mail abgesendet wurde, wenn nicht: Fehlermeldung ausgeben, wenn ja: Erfolgsmeldung ausgeben */ if (!$mailer->send()) { $errors[] = HTML_ERROR_START . 'Es ist ein Fehler aufgetreten. Bitte versuchen Sie es in ein paar Minuten nochmal!' . HTML_ERROR_END; } else { $success = HTML_SUCCESS_START . 'Ihre Nachricht wurde erfolgreich abgesendet!' . HTML_SUCCESS_END; } }
Grüße,
Stef
-
Hey,
das ist in dem Tutorial eigentlich gut beschrieben.
Schau mal:
PHP
Alles anzeigenif (count($errors) === 0) { $mailer = new PHPMailer(); $mailer->CharSet = 'UTF-8'; // Charset setzen (für richtige Darstellung von Sonderzeichen/Umlauten) $mailer->setFrom($email, $name); // Absenderemail und -name setzen $mailer->addAddress($receiver); // --> Empfängeradresse <-- $mailer->isHTML(true); $mailer->Subject = 'Neue Nachricht vom Kontaktformular'; // Betreff der Email $mailer->Body = '<h3>Neue Nachricht von: ' . $name . '</h3> <h4>E-Mail-Adresse: ' . $email . '</h4> <h2>Betreff: ' . $subject . '</h2> <p>' . nl2br($message) . '</p>'; // Inhalt der Email /** * Überprüfung, ob Mail abgesendet wurde, wenn nicht: Fehlermeldung ausgeben, wenn ja: Erfolgsmeldung ausgeben */ if (!$mailer->send()) { $errors[] = HTML_ERROR_START . 'Es ist ein Fehler aufgetreten. Bitte versuchen Sie es in ein paar Minuten nochmal!' . HTML_ERROR_END; } else { $success = HTML_SUCCESS_START . 'Ihre Nachricht wurde erfolgreich abgesendet!' . HTML_SUCCESS_END; } }
Grüße,
Stef
Danke Stef das Du mir überhaupt antwortest.
Also, ich trage das statt "receiver" ein, richtig? Oje, mit oder ohne $ davor. Ich kapiere nicht wo die Befehle durch feste Eingaben ersetzt werden müssen. Ich sag ja: PHP-Niete!
Ich bin euch echt dankbar für diese Tutorials, habe monatelang nach einer Lösung gesucht ein einfachen Formular zu fertigen das auch noch dem heutigen Standard einigermaßen gleichkommt.Danke nochmal
LG Nudelmaus
-
$ ist ein Initiator für Variablen in PHP.
-
$ ist ein Initiator für Variablen in PHP.
D.h. weglassen da meine email-Adresse ja keine Variable ist? Och kommt schon, könnt ihr mir nicht einfach sage ob ja oder nein?
Das $-Zeichen kommt nur vor Variablen, soweit verstanden. Könnt ihr mir etwas empfehlen wo ich PHP leicht erlernen kann? Ich meine ohne gleich ein Studium abzulegen. html ist ja ein Babyfu... dagegen.
-
Och kommt schon, könnt ihr mir nicht einfach sage ob ja oder nein?
Wie wäre es denn mit Grundlagen lernen?
-
Wie wäre es denn mit Grundlagen lernen?
Gerne, ich habe ein 600-Seiten Buch neben mir liegen. Leider werden darin Befehle in erster Linie für Rechenaufgaben beschrieben und nicht für simple Formulare. Ich habe u. a. ja auch gefragt ob ihr mir was empfehlen könnt. Bin ja bereit mir noch was beizubringen. Also, könnt ihr? Ansonsten sagt einfach nein und ich lese das Buch halt zum 3.Mal.
-
Hey,
Nudelmaus : Wenn du dich schon als PHP Niete bezeichnest wird doch alles nichts!
Du musst dort unter $mailer->addAddress($receiver); die Empfänger Adresse angeben.
Es sollte dann so aussehen:
$mailer->addAddress("Nudelmaus@gmx.de");
oder mittels Variable
Einen guten kostenlosen Kurs zu PHP findest du hier: https://www.php-kurs.com/.
Zu dem PHP-Mailer findest du hier ein gutes Tutorial: Tutorial PHP-Mailer.
Grüße,
Stef
-
Hallo,
Stef : Danke danke danke!!!
Jetzt weiß ich Bescheid, so habe ich es auch bereits probiert.
Aber leider funktioniert es noch nicht. Ich laufe eine weiße Seite ohne Fehlermeldung o. ä. und die Mail wird auch nicht versendet.
By the way, mir ist in dem Code aufgefallen das die PHP Datei Datenüberprüfung nicht mit ?> abgeschlossen wird. Ist das korrekt? Kenne es ja aus dem html das alles "ein Ende" haben muss.
Die beiden Links zum lernen habe ich bereits gesichtet. Durch Arne bin ich hierher gekommen, sorry für die Nerverei .
Sodele, nochmal Danke. Werde jetzt weiter probieren und euch bei Gelegenheit mitteilen ob es funzt.
LG Britta
-
Hey,
bei einem reinen PHP Script kann man die Endung des Tags auch weglassen. Das ist sogar eine Regel von nem Clean Code. Denn wenn man nach dem Endtag von PHP ein Leerzeichen unbewusst reinmacht hat man schon ein Output. Aufgrunddessen kann es dann zu unerklärlichen Fehlern kommen.
Aso okay. Du nervst nicht.
Eröffne mal bitte ein neues Thema mit deinem Code und nochmals einer kurzen Beschreibung. Werde es mir dann mal anschauen.
Stef
-
Hey,
bei einem reinen PHP Script kann man die Endung des Tags auch weglassen. Das ist sogar eine Regel von nem Clean Code. Denn wenn man nach dem Endtag von PHP ein Leerzeichen unbewusst reinmacht hat man schon ein Output. Aufgrunddessen kann es dann zu unerklärlichen Fehlern kommen.
Das ist leider wahr. Die Leute, die diese PSR-Regel aufgestellt haben, haben
a) NIEMALS Probleme mit verstümmelten Scripten gehabt, sonst wären sie NIEMALS auf die Idee gekommen, das Ende-Tag wegzulassen, denn das ist die EINZIGE Möglichkeit zu erkennen, ob ein Script auch alle Zeilen beinhaltet, die es beinhalten sollte. Das bezieht sich aber nur auf reine PHP-Scripte und nicht diesen HTML-Kuddelmuddel, den man tonnenweise sieht.
b) offenkundig Probleme, Code sauber zu schreiben, denn dabei tritt das Problem nicht auf. Soviel zu "clean code".
-
Interessante Info, ich habe mich immer gewundert, warum mein VS-Code immer das schließende Tag gelöscht hat. Das ist jetzt wohl die Erklärung.
-
Ein nicht ganz unwichtiger Grund für das weglassen aus Sicht des Interpreter ist der, dass bei jedem End-Tag rausgesprungen und in jedem Start-Tag wieder eingesprungen wird. Nutzt man bspw. include, um weitere PHP-Dateien einzubinden, läuft der Interpreter quasi sauber durch, anstatt raus und wieder reinzuspringen. Mag bei großen Projekten erst Auswirkungen haben, aber ist halt ein Grund.
-
Erstmal vielen Dank für diesen super gemachten und erklärten Thread. Ich habe das Tutorial gerade nachvollzogen und mal eine Fassung auf meinen Testserver installiert. Bei PHP blicke ich trotz eifriger Bemühungen nicht durch - aber das Formular läuft bei mir trotzdem! Kompliment an die Entwickler!
Dabei habe ich Folgendes festgestellt: Nach erfolgreichem "Senden" kann man den "Senden"-Button beliebig oft drücken - jedesmal wird eine weitere E-Mail gesendet. Wie könnte man das unterbinden? (Z.B. indem man ein paar Jahre PHP lernt, ich weiß - aber vielleicht kann das ja jemand abkürzen?
1.000 Dank im Voraus!
-
Nach dem erfolgreichen Senden einfach auf eine andere Seite weiterleiten.
PS: Einen alten Thread wieder zum Leben zu erwecken ist nicht schön, statt dessen bitte einen eigenen Thread erstellen
-
Danke für Deine Antwort und die Hinweise.
auf eine andere Seite weiterleiten
hab ich jetzt ca. 4 Stunden recherchiert und versucht - mit header("Location: https://meineurl.de/"); - an verschiedenen Stellen:
- nach der Zeile: (beginnend mit $success =...) - das kann vermutlich nicht funktionieren, weil header("... keine Leerzeichen und Leerzeichen verträgt
- am Dateiende in eigenem PHP-Tag - funktionierte auch nicht.
Konnte hier im Netz zur richtigen Einbindung der header-Funktion oder einer Alternative nichts finden. Dank im Voraus für nen Tipp, wie/wo das hin muss.
Einen alten Thread wieder zum Leben zu erwecken ist nicht schön, statt dessen bitte einen eigenen Thread erstellen
Sorry. Das Thema und die Technik erschienen mir noch aktuell. Wird der Bezug zu meiner Frage nicht leichter nachvollziehbar, wenn er IM betreffenden Thread steht?
-
Falls es hilft, hier die beiden Dateien, die ich verwende (als .txt, weil .php zum Hochladen nicht erlaubt war)
[Mod: Dateien entfernt]
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!