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

Frage Kontaktformular mit PHP versenden

newbie01

Neues Mitglied
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 = "[email protected]";
$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
 
Werbung:
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
 
Neben dem bereits genannten: im Formular fehlt die Beschriftung der Felder (samt label-Element) - und nein, das placeholder-Attribut ersetzt die Beschriftung nicht!
 
Werbung:
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;
 
Neben dem bereits genannten: im Formular fehlt die Beschriftung der Felder (samt label-Element) - und nein, das placeholder-Attribut ersetzt die Beschriftung nicht!
Die Felder sind doch beschriftet ( name="name", name="email", name="nachricht", name="submit"). Das Label selbst brauchst Du für die allgemeine Funktion des Scripts auch nicht.

Zeige doch mal den Code-Absatz aus kontakt.php ...
PHP:
header("Location: kontakt.php?mailsend");

Außerdem Deine .htaccess
 
Werbung:
Die Felder sind doch beschriftet ( name="name", name="email", name="nachricht", name="submit"). Das Label selbst brauchst Du für die allgemeine Funktion des Scripts auch nicht.
Nein. Das name-Attribut ist nicht die Beschriftung, die Beschriftung erfolgt über das label-Element - und doch, das ist für die allgemeine Funktion notwendig. Wie sollen Besucher sonst wissen welches Feld für was steht, z.B. wenn schon was im Feld drin steht oder wenn sie einfach nicht sehen können?
 
Nein. Das name-Attribut ist nicht die Beschriftung, die Beschriftung erfolgt über das label-Element - und doch, das ist für die allgemeine Funktion notwendig. Wie sollen Besucher sonst wissen welches Feld für was steht, z.B. wenn schon was im Feld drin steht oder wenn sie einfach nicht sehen können?
Alleine für die Funktion ist das Nutzen eines Labels nicht notwendig. Du sprichst damit die Usability an.
 
Zurück
Oben