PHP Kontaktformular (+Bootstrap)

Hallo alle miteinander und noch ein Frohes Neues Jahr!

Ich bin neu im Forum und hoffe nicht an der falschen Stelle zu posten… D:

Ich habe ein kleines Problem mit einem PHP/ HTML Kontaktformular:
Das Kontaktformular wird in einem Bootstrap Modal angezeigt und funktioniert auch soweit…

Beim Absenden der E-Mail wird die Seite allerdings komplett neu geladen (also bei der type=„submit“)
Wie kann man das verhindern, sodass das Fenster offen bleibt?
Ausserdem würde ich es gerne so machen, dass ich auf den submit Button eine zweite Funktion legen kann… also dieses Fenster auch wieder zu schliessen (class=„close“ data-dismiss=„modal“)…

Wie stellt man das am geschicktesten an?

Vielen Dank für eure Hilfe und einen schönen Abend!

P.s. CSS includes und Body und Head Tags habe ich dein Einfachheit halber weggelassen…

[CODE]<?php

/**

  • Konfiguration
  • Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!
  • Das Skript bitte in UTF-8 abspeichern (ohne BOM).
    */
    // An welche Adresse sollen die Mails gesendet werden?
    $zieladresse = ‚quatsch@quatsch.de‘;

// Welche Adresse soll als Absender angegeben werden?
// (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$absenderadresse = ‚empfaenger@empfaenger.de‘;

// Welcher Absendername soll verwendet werden?
$absendername = ‚Formular‘;

// Welchen Betreff sollen die Mails erhalten?
$betreff = ‚Frage vom Kontakformular‘;

// Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$trenner = „:\t“; // Doppelpunkt + Tabulator

/**

  • Ende Konfiguration
    */

if ($_SERVER[‚REQUEST_METHOD‘] === „POST“) {

$header = array();
$header[] = "From: ".mb_encode_mimeheader($absendername, "utf-8", "Q")." <".$absenderadresse.">";
$header[] = "MIME-Version: 1.0";
$header[] = "Content-type: text/plain; charset=utf-8";
$header[] = "Content-transfer-encoding: 8bit";

$mailtext = "";

foreach ($_POST as $name => $wert) {
    if (is_array($wert)) {
        foreach ($wert as $einzelwert) {
            $mailtext .= $name.$trenner.$einzelwert."\n";
        }
    } else {
        $mailtext .= $name.$trenner.$wert."\n";
    }
}

mail(
    $zieladresse,
    mb_encode_mimeheader($betreff, "utf-8", "Q"),
    $mailtext
);

}

header(„Content-type: text/html; charset=utf-8“);

?>




















Absenden
<button type=„reset“ value „Zurücksetzen“ class=„btn btn-default“>Formular zurücksetzen


Schliessen












[/CODE]

Wenn du keinen Reload haben willst, solltest du das Formular nicht mit PHP submitten, sondern den Inhalt von POST per AJAX an einen PHP-Mailer übergeben. Mittels des Success-Handlers der AJAX-Funktion lässt sich dann auch das Modal schließen. Wobei allerdings die Frage offen bleibt, in welcher Form der User ein Feedback für den erfolgreichen - oder auch fehlerhaften - Versand des Formulars erhält.

Danke für die Rückmeldung
Hmmm… klingt kompliziert… geht das nicht auch einfacher?

Sofern du das Formular ohne kompletten Reload versenden willst, ist AJAX die einzig mögliche Option. Egal ob nun mit oder ohne Modal.

und iframe? kann man das nicht irgendwie damit machen :o

Keine Ahnung. iFrames sind so was von 1999, aber vielleicht findet sich ja in den Archiven des Usenet noch ein Lösungsansatz. :wink:

Hier mein Thema vor ein paar Tagen: Kontaktform „dynamisch“ übermitteln