Frage Kontaktformular mit PHP versenden

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

newbie01

Neues Mitglied
2 November 2020
2
0
1
30
Hallo zusammen, Anfänger hier :smile:

ich habe das Forum bereits durchsucht, bin aber mit meinem Problem leider noch nicht weiter gekommen.
Ich habe ein Kontaktformular für meine Seite erstellt, welches ich gerne mit PHP versenden würde. Allerdings komme ich immer auf eine weiße Seite ("https://www.xyz.de/php/form.php"), wenn der "senden"-Button gedrückt wird.
Vielleicht kann mir jemand helfen?

HTML (kontakt.php):
<form class="kontaktformular" action="form.php" method="post">
<input type="text" name="name" class="kontaktformular-text" placeholder="Name">
<input type="email" name="email" class="kontaktformular-text" placeholder="Email" required>
<textarea class="kontaktformular-text" name="nachricht" placeholder="Nachricht"></textarea>
<input name="submit" type="submit" class="kontaktformular-btn" value="senden">
</form>

PHP (form.php):
<?php

if(isset($_POST['submit'])) {
$name = $_POST['name'];
$mailFrom = $_POST['email'];
$message = $_POST['nachricht'];

$mailTo = "kontakt@xyz.de";
$headers = "From: ".$mailFrom;
$txt = .$message;

mail($mailTo, $txt, $headers);

header("Location: kontakt.php?mailsend");
}

?>
Die beiden Dateien liegen im gleichen Ordner (php) und per .htaccess (ebenfalls im gleichen Ordner) habe ich festgelegt, dass die kontakt.php Datei in kontakt.html Datei umgewandelt wird.



Würde mich über Feedback freuen, danke schonmal!

LG
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.355
163
63
Grundlagen der Fehlersuche:

Richtig debuggen
  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
Und die Sache mit .htaccess würde ich erst mal solange weglassen, bis das Script funktioniert.

Mit der PHP-Funktion mail() kann man E-Mails versenden. Aber damit hat der Entwickler oft viele Sorgen. Für den korrekten E-Mail Versand sind verschiedene Mail-Header notwendig. Ohne die richtigen Header bekommen viele Mail-Clients Probleme bei der Anzeige oder empfangen diese erst gar nicht. Allerdings ist es aufgrund der Komplexität sehr aufwändig, alle sich damit befassenden RFC-Dokumente selbst durch zuarbeiten und anzuwenden. Stattdessen sollte man Mailerklassen verwenden, die diese Header korrekt einbinden. Z.B. den phpMailer
 

tk1234

Mitglied
2 September 2020
49
10
8
Neben dem bereits genannten: im Formular fehlt die Beschriftung der Felder (samt label-Element) - und nein, das placeholder-Attribut ersetzt die Beschriftung nicht!
 

broxx

Neues Mitglied
17 Juli 2019
8
1
3
Österreich
wrkt.biz
Hallo newbie01!
Mir ist nur auf die Schnelle aufgefallen, dass du im PHP-Code einen Fehler hast.
Hier gehört der Punkt entfernt:
PHP:
$txt = .$message;