Julius: Kontaktformular Mailer Typen

Beitrag lesen

Hallo Khan,

Die Lösung ist an und für sich nicht schlecht, jedoch wie schaut es aus wenn der Mailer PHP eine Prüfung vor der Sendung macht, man aber vorher schon den Sendenbutton geklickt hat. Lädt dann die Seite trotzdem nochmal neu?

Natürlich. Durch das Klicken auf den Absende-Button sendet der Browser eine Anfrage an den Server und bekommt eine Antwort, die er dem Nutzer darstellt. Das kann eine Seite mit einer Danke-Botschaft oder das selbe Formular noch einmal sein.

Wäre fatal da alle im Formular angegebenen Daten verloren gehen :(

Nicht, wenn du in dem Fall eine Seite mit dem Formular auslieferst, in dem die Felder mit den vorherigen Eingaben des Nutzers vorbelegst. Das nennt man „Affenformular“. Beispielsweise so:

<label for="strasse">Straße</label>
<input
  id="strasse"
  name="strasse"
  value="<?=htmlspecialchars($_POST['strasse']??'')?>"

>

Natürlich solltest du dazu eine aussagekräftige Fehlermeldung ausgeben.

Du machst also Server-seitig immer die Unterscheidung, ob richtige, falsche oder eben gar keine Eingabe gesendet wurden. Im ersten Fall sendest du dann die E-Mail und gibst die Danke-Botschaft aus, in beiden anderen zeigst du das Formular an.


Anmerkung: Der PHP-Code oben benutzt mehrere Kurzschreibweisen, die teilweise erst mit PHP7 eingeführt wurden, so würde er ausgeschrieben aussehen:

if(isset($_POST['strasse'])) {
  echo htmlspecialchars($_POST['strasse']);
}
else {
  echo '';
}

Gruß
Julius