Antworten auf deine Fragen:
Neues Thema erstellen

Mail aus html mittels php prüfen und senden

schnufer

Noch nicht viel geschrieben

Hallo zusammen,
ich habe folgendes html-Formular erstellt:
HTML:
 <div id="apkontakt">
        <table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td><form action="http://www.test.ch/NEW/mail/phpmailer.php" method="POST">
              <table width="565" border="0" align="center" cellpadding="0" cellspacing="10">
                <tr>
    <td width="198" align="right" valign="middle" class="normtextweiss">Ihr Name und Vorname:</td>
    <td width="367"><input type="text" name="name_surname" /></td>
  </tr>
  <tr>
    <td width="198" align="right" valign="middle" class="normtextweiss">Ihre Email:</td>
    <td width="367"><input type="email" name="mailfrom" /></td>
  </tr>
  <tr>
    <td width="198" align="right" valign="middle" class="normtextweiss">Betreff:</td>
    <td width="367"><input type="text" name="subject" /></td>
  </tr>
  <tr>
    <td width="198" align="right" valign="middle" class="normtextweiss">
      <label for="textarea">Text:</label></td>
    <td width="367"><textarea name="textarea" cols="50" rows="10" id="textarea"></textarea></td>
  </tr>
  <tr>
    <td width="198">&nbsp;</td>
    <td width="367" align="right"><input type="submit" value="E-Mail senden" /></td>
  </tr>
</table>
</form></td>
          </tr>
        </table>
      </div>

Das folgende php-Script prüft und sende das Formmail:
PHP:
<?php
echo '<b></b>' ;
//überprüfung der eingabe
//name vorname??
if (empty($_POST['name_surname'])) {
    echo 'Geben Sie Ihren Namen und Vornamen an!';
    $error = 'on';
}
//absender-email-adresse??
if (empty($_POST['mailfrom'])) {
    echo 'Geben Sie Ihre E-Mail-Adresse an!';
    $error = 'on';
}
//betreff??
if (empty($_POST['subject'])) {
    echo 'Kein Betreff angeben!';
    $error = 'on';
}
//email (text)??
if (empty($_POST['textarea'])) {
    echo 'Leere E-Mails werden nicht versendet!';
    $error = 'on';
}
//falls die überprüfung in ordnung ist, email senden
if(!isset($error)) {
    //vereinfachung der variablen
    $name_surname    = $_POST['name_surname'];
    $mailfrom        = $_POST['mailfrom'];
    $subject        = $_POST['subject'];
    $text            = $_POST['textarea'];
    //header-definition
    $headers .= 'From: '.$name_surname.' <'.$mailfrom.'>'."\n";
    $headers .= 'X-Sender: <'.$mailfrom.'>'."\n";
    $headers .= "Reply-To: ".$name_surname." <$mailfrom>\r\n";
    //anpassung der zeilenumbrüche des textes für email
    $text = preg_replace('/<br[ ]?\/?>/', "\n", $text);
    //anpassung der umlaute
    $text = preg_replace('/&auml;/', "ä", $text);
    $text = preg_replace('/&ouml;/', "ö", $text);
    $text = preg_replace('/&uuml;/', "ü", $text);
    $text = preg_replace('/&Auml;/', "Ä", $text);
    $text = preg_replace('/&Uuml;/', "Ü", $text);
    $text = preg_replace('/&Ouml;/', "Ö", $text);
    //emailempfänger definieren
    $mailto = "test@test.ch";
    //mail senden
    mail ($mailto,$subject,$text,$headers);
    //bestätigung
    echo 'E-Mail wurde erfolgreich versendet!';
}
?>

Alles läuft gut, aber es öffnet immer eine leere html-Seite mit der jeweiligen Meldung. Möchte aber die Meldung auf der selben html-Seite wie das Formmail. Einfach an der Stelle wo sich <div id="apkontakt"> befindet.
Im voraus herzlichen Dank.
schnufer
 

Myhar

Hat es drauf

Du hast kein Formular, du hast eine Tabelle mit Inputfeldern. Hier brauchst du keine Tabelle (damit sparst du grob geschätzte 80% an Code). Auch fehlen label-Tags komplett bei dir. Soweit nur zur aktuellen technischen Umsetzung.
Wenn du eine neue Seite mit php generierst, dann wird natürlich auch eine neue Seite ausgegeben. Möchtest du nur auf der aktuellen Seite etwas austauschen musst du dies mittels ajax realisieren
 

schnufer

Noch nicht viel geschrieben

Erstmal ein Danke für die Antwort. Ein Formular ist ja da.
Ajax sieht für mich sehr kompliziert aus.
Ich möchte ja nur nach betätigen des “Senden-Button” die visibility des #apkontakt auf hidden setzten und an der Stelle die visibility von #apmeldung auf visible stellen. Die Meldungen, ob gesendet oder ein Fehler aufgetreten ist, sollte danach in #apmeldung stehen. Die jetzige “from action / method=“POST” funktioniert, die Mail wird korrekt verschickt, aber es öffnet dann eine neue, weisse html-Seite mit der entsprechenden Meldung.
 

mwxx

Nicht mehr ganz neu hier

Erstmal ein Danke für die Antwort. Ein Formular ist ja da.
Ajax sieht für mich sehr kompliziert aus.
Ich möchte ja nur nach betätigen des “Senden-Button” die visibility des #apkontakt auf hidden setzten und an der Stelle die visibility von #apmeldung auf visible stellen. Die Meldungen, ob gesendet oder ein Fehler aufgetreten ist, sollte danach in #apmeldung stehen. Die jetzige “from action / method=“POST” funktioniert, die Mail wird korrekt verschickt, aber es öffnet dann eine neue, weisse html-Seite mit der entsprechenden Meldung.

Ja und genau das geht so nicht, denn Du verlässt mit dem PHP-Aufruf ja den Client. Wenn Du vom Server zurückkehren möchstest rufst Du entweder die Seite erneut auf und gestaltest dann, je nach Aufrufparameter die Seite dann um oder Du clonst die alte Seite und baust sie als Reaktions-Empfängerseite ("für hinterher") um und steuerst Sie nach Emailversand an...
 

Myhar

Hat es drauf

Ein Formular ist ja da.

Du hast kein Formular, du hast eine Datentabelle. Nur willst du keine Daten darstellen sondern lediglich ein Formular anbieten:
HTML:
<div> <label for="name">Name</label> <input id="name" name="name" type="text"></div>
<div> <label for="mail">E-Mail</label> <input id="mail" name="mail" type="mail"></div>

Bezüglich des "einfach ein- ausblenden": Hier wirst du um Javascript nicht herumkommen. Und wenn du die Eingaben vor dem Absenden noch am Server prüfst, um ajax nicht. Außer du baust die Seite ein zweites Mal auf, wie mwxx bereits gesagt hat.
 

afr0kalypse

Allwissendes Karmameerschweinchen!

Hallo. Dein Formular muss die Daten per action Parameter an deine HTML Seite senden.
Also angenommen dein HTML Formular befindet sich auf formular.html. Dann änderst du dein form Tag wie folgt:
HTML:
<form action="http://www.test.ch/NEW/mail/formular.html">
Dein PHP Script kannst du auch in der Datei aufrufen. Allerdings musst du dann immer auf deiner HTML Seite alle POST Variabeln validieren.
Die Ausgabe im DIV kannst du auch via PHP mit echo durchführen, sobald POST Variablen valide und befüllt sind.

@Myhar: Jetzt erklär mir mal bitte, wieso er kein Formular hat.
ich lese da <form ...> <input ...> </form>
 

Myhar

Hat es drauf

Jetzt erklär mir mal bitte, wieso er kein Formular hat.
Das hat jetzt dann aber nichts mit dem Thema zu tun: Es stimmt, er hat einen form-Tag. Aber er hat zuerst einen table-Tag, also möchte er hier eine Datentabelle erstellen. Und ein Formular gehört nicht in eine Datentabelle, bzw. ist es hier eine Tabelle, welche für das Layout missbraucht wird. Es ist also ein Formular vorhanden, jedoch semantisch vollkommen unkorrekt umgesetzt. Layouttabellen setzt man heutzutage nicht mehr ein, auch nicht bei Formularen.
 

schnufer

Noch nicht viel geschrieben

Sorry, ich bin eben kein Profi. Es geht mir hier einzig darum wie ich mein Problem lösen könnte. Hier habe ich einen Link zu der Testseite
Vielleicht kann mir jemand ein Beispiel machen, damit ich dies besser verstehe.
Mit freundlichen Grüssen schnufer
 

Chickenshooter

Alter Mann

Moin, Moin....

Ich mach das mal exemplarisch für ein text input field ....

PHP:
//
...schnipp
Dein Code
if(!isset($error)){
  echo'<div class="error">';
   //hier deine HTML Ausgabe für den Nutzer wenn er was vergessen hat....
  echo'</div>';
}

..schnipp

echo '<form action="./deineDatei.php" method="post">';
echo '<input type="text" value=" '.$_POST['name_surname'].' " />';
echo '<input type="submit" value="Einsenden" />';
echo '</form>';

Du sendest die Anfrage an die php datei die HTML erzeugt und kannst dann mit dieser (php datei) natürlich auch das auswerten was der Nutzer eingegeben hat. Und dann jenachdem was ist die Ausgabe verändern....
 

schnufer

Noch nicht viel geschrieben

Herzlichen Dank für Eure Tipps und Hilfen. Habe ein rauchender Kopf, aber .... :daumenhoch
Da habe ich noch einiges zum lernen.
Gruss schnufer
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.621
Beiträge
1.538.378
Mitglieder
67.545
Neuestes Mitglied
helenkitina
Oben