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

PHP Kontaktformular (+Bootstrap)

MMM_okc

Neues Mitglied
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 = '[email protected]';

// Welche Adresse soll als Absender angegeben werden?
// (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$absenderadresse = '[email protected]';

// 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");

?>
        <form action="" method="post">
            <dl>
                <div class="input-group">
                <span class="input-group-addon"></span>
                <dd><input type="text" name="Reallife-Name" class="form-control" placeholder="Dein Name" /></dd></div><br>
                <div class="input-group input-group">
                  <span class="input-group-addon"></span>
                <dd><input type="text" name="Name" class="form-control" placeholder="Dein Name" /></dd></div><br>
                <div class="input-group input-group">
                  <span class="input-group-addon"></span>
                <dd><input type="text" name="E-Mail" class="form-control" placeholder="Deine E-Mail-Adresse"/></dd></div><br>
                <div class="input-group input-group">
                  <span class="input-group-addon"></span>
                <dd><textarea name="Frage" rows="10" class="form-control" placeholder="Deine Frage"/></textarea></dd></div>
            </dl>
                  </div>
                  <div class="modal-footer">
                  <p class="pull-left"><button type="submit" value="Senden" class="btn btn-default">Absenden</button>
                  <button type="reset" value "Zurücksetzen" class="btn btn-default">Formular zurücksetzen</button></p>
                  <button type="button" class="btn btn-primary" class="close" data-dismiss="modal">Schliessen</button></form>
                </div>
               </div><!-- /.modal-content -->
              </div><!-- /.modal-dialog -->
             </div><!-- /.modal --></p><br><br><br><br>
      <hr>
    <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="dist/js/bootstrap.min.js"></script>
 
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.
 
Sofern du das Formular ohne kompletten Reload versenden willst, ist AJAX die einzig mögliche Option. Egal ob nun mit oder ohne Modal.
 
Zurück
Oben