Ole Stein: Kontaktformular, Bestätigung in der selben Site

Neuer Versuch,

könnt Ihr mir helfen? Ich wollte für eine Website ein Kontaktformular bauen, funktioniert alles auch soweit, nur die Bestätigung (Z.B. "Vielen Dank, Ihre Mail wurde weitergeleitet") dieser Text sollte auch in der Website stehen, tut er aber leider nicht, sondern öffnet in einem leerem Browserfenster.

Wie funktioniert es richtig?!

Arbeite nur im HTML, habe keine Script und PHP-Kenntnisse

Vielen Dank im Voraus

Gruß

Ole

So sieht es aus!

/* Kontaktfeld im Content der Homepage */

<div id="content">
 <form id="form" action="/php/formmailer.php" method="post">
 <p>Vorname:<br>
 <input name="Vorname" size="30"></p>
 <p>Name:<br />
 <input name="Name" size="30"></p>
 <p>E-Mail:<br />
 <input name="Mail" size="30"></p>
 <p>Telefon:<br />
 <input name="Telefon" size="30"></p>
 <p>Betreff:<br />
 <textarea name="Text" rows="5" cols="50"></textarea></p>
 <p><input type="reset" value="Formularinhalt l&ouml;schen" class="knopf">
 <input type="submit" value="Jetzt abschicken!" class="knopf" title="Jetzt senden"></p>
 </form>
</div>

/* formmailer.php */

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859">
<title>Formularauswertung</title>
</head>
<body>
<?php
/* Universalmailer Version 3.2, Januar 2003, © JCH */
/* DIE NÄCHSTEN WERTE DARFST DU EDITIEREN */
$empfaenger="info@muster.de";
$betreff="Betrefftext hier eintragen";
$botschaft="Folgende Daten wurden eingegeben:\n\n";
/* EDITIEREN ENDE */
/* Schleife liest Attribut-Werte-Paare aus: */
foreach($_POST as $name=> $value) {
/* Alle Daten werden in $botschaft gespeichert: */
$botschaft.="$name=$value\n"; // Kurzform für Verkettung
}
/* Versenden! Bitte Mail-Feld im Formular vorsehen! */
if (isset($_POST["Mail"]) && $_POST["Mail"]!="") { // Mail-Feld gesetzt und nicht leer?
/* Dann wird Versenden-Funktion mail() aktiv */
$absender=$_POST["Mail"];
if(mail($empfaenger, $betreff, $botschaft, "From: $absender")) {
/* War mail() erfolgreich? Dann sieht Benutzer folgende Zeilen */
echo "<h2>Vielen Dank für Ihre Mail!</h2>\n";
echo "<p>Ihre Nachricht wurde weitergeleitet!</p>\n";
}
/* Sonst gibt es eine Fehlermeldung: */
else {
echo "<h2>Leider konnte Ihre Botschaft nicht versandt werden.</h2>\n";
}
} // äußere if-Funktion schließen
/* else-Zweig äußere if bei nicht gesetzter Variable $Mail: */
else {
echo "<h2>Bitte geben Sie Ihre E-Mail-Adresse an!</h2>\n";
}
?>
</body>
</html>

  1. hi!

    das sollte nicht all zu schwer sein, ich versuchs mal mit meinen laienkenntnissen zu erklären:

    nachdem benutzer auf "abschicken" klickt werden die eingegebenen daten an das verarbeitende script gesendet - das definierst du hier beim wert "action":

      
     <form id="form" action="/php/formmailer.php" method="post">  
    
    

    wenn also die erfolgsmeldung auf einer leeren, neuen seite ausgegeben wird liegt das daran dass nach dem absenden zur angegebenen seite gewechselt wird - und in deiner .php-datei befinden sich nunmal weder das formular noch die anderen inhalte der webseite.

    wie du das ändern kannst:

    du schickst die formular-daten nach dem absenden nicht an eine andere webseite, sondernd an die selbe seite auf der sich das formular befindet. wenn deine webseite also z.b. "mail.php" heißt würde das so aussehen:

      
     <form id="form" action="mail.php" method="post">  
    
    

    nur: ohne das php-script versteht deine webseite mit dem mailformular garnicht was sie mit den daten machen soll, darum musst du noch deine webseite ändern:

    • zunächst benennst du sie nicht .html, sondernd .php
    • dann fügst du gleich am anfang der datei das benötigte script ein
    • anschließend kommen deine webinhalte, gefolgt vom formular

    und dann könnte das sogar funktionieren. sieht dann etwa so aus:

      
    <?php  
    $empfaenger="info@muster.de";  
    $betreff="Betrefftext hier eintragen";  
      
     (...)  
      
    else {  
    echo "<h2>Bitte geben Sie Ihre E-Mail-Adresse an!</h2>\n";  
    }  
    ?>  
    
    
      
    <!doctype ...>  
    <html>  
     <head>  
      
     (...)  
      
     <form id="form" action="mail.php" method="post">  
      (...)  
     </form>  
    
    

    ... mit ein wenig probieren kommst du so sicher ans ziel. und nebenbei: ein paar php-funktionen anzugucken tut garnicht weh - und ist auch ehrlich nicht schwer zu verstehen ;)

    am rand: wofür ist das kontaktformular gedacht? hoffentlich nichts wirklich wichtiges?! immerhin werden die felder darauf überprüft ob sie leer sind - aber zählt ein leerzeichen als eingegebener wert? findet eine überprüfung der mailadresse statt, zumindestens nach dem schema "name@domain.tld"?
    das mag so schon funktionieren, eine elegante lösung ist es aber nicht unbedingt - und das, wo es so viele fertige formmailer gibt.

    wenns nur für einen begrenzten personenkreis zugängig ist würde ich das so lassen - soll es aber ein größerer und vor allem seriöser internetauftritt werden würd ich doch lieber mal ein umfangreicheres, dafür aber sichereres script suchen - nur meine meinung.

    grüße, viel spaß & viel glück!

    sph

    1. Hi sph,

      vielen Dank für die Zeit die du dir genommen hast. Ist prima erklärt.

      Gruß
      Ole