Joachim Geisweid: selfhtml-wiki: Formmailer-Advanced

problematische Seite

Hallo Autoren der Seite "PHP/Anwendung und Praxis/Formmailer-Advanced",

ich habe als PHP-Laie das Beispiel ausprobiert und möglicherweise einen Fehler gefunden:

in Zeile 63 - 65 steht folgender Code:

 if ($result == 0) {
     die("Mail konnte nicht versandt werden.");
 }

an dieser Stelle bleibt das Skript hängen. Die Mail wird versandt aber die Dankeseite nicht angezeigt. Ich habe wie folgt geändert:

 if ($result == 0) {
     ("Die Mail konnte nicht versandt werden.");
 }

Nun funktioniert das Beispiel einwanfrei :=)

Zusätzlich wäre es für mich als Anfänger nützlich gewesen, darauf hinzuweisen, dass der PHP-Teil des Beispiels in eine eigene Datei (z.B. Formmailer.php) gehört und dieser Name im HTML-Teil bei action="" angegeben werden muss:

     <form action="Formmailer.php" method="post">

Ich hoffe, ich konnte mit diesen Anmerkungen zur Verbesserung des Wikis beitragen.

Herzliche Grüße und Dank an alle Autoren für die viele Mühe die sie sich für alle Lernenden machen

Joachim Geisweid

  1. Aloha ;)

    an dieser Stelle bleibt das Skript hängen. Die Mail wird versandt aber die Dankeseite nicht angezeigt. Ich habe wie folgt geändert:

     if ($result == 0) {
         ("Die Mail konnte nicht versandt werden.");
     }
    

    Nun funktioniert das Beispiel einwanfrei :=)

    Klar - weil kein Abbruch mehr erfolgt ;) Das Problem ist allerdings nicht das hier entfernte "die" - das muss da eigentlich schon stehen. Das Problem scheint zu sein, dass $result 0 ist, ohne, dass es dafür einen Grund gibt (denn die Mail wurde ja versandt). Warum das der Fall ist, kann ich mangels Detailkenntnis des Mailers nicht genau analysieren. Das Problem steckt also vielmehr hier

    $result = $mailer->send($message);
    

    allerdings nicht im Code, sondern im Verhalten des Mailers.

    Zusätzlich wäre es für mich als Anfänger nützlich gewesen, darauf hinzuweisen, dass der PHP-Teil des Beispiels in eine eigene Datei (z.B. Formmailer.php) gehört und dieser Name im HTML-Teil bei action="" angegeben werden muss:

         <form action="Formmailer.php" method="post">
    

    Danke für den Hinweis! Es ist immer gut, ein Feedback von den Lesern zu bekommen. Zumal das leer gelassene action-Feld im Beispiel nicht eindeutig sagt, dass da der "eigene" Dateiname einzutragen ist. Ich füge das mal entsprechend ein.

    Grüße,

    RIDER

    --
    Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller Erreichbar manchmal im Self-TS (ts.selfhtml.org) oder sonst - wenn online - auf dem eigenen TeamSpeak-Server (fritz.campingrider.de) oder unter: # Facebook # Twitter # Steam # YouTube # Self-Wiki # ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
  2. Moin!

    Zusätzlich wäre es für mich als Anfänger nützlich gewesen, darauf hinzuweisen, dass der PHP-Teil des Beispiels in eine eigene Datei (z.B. Formmailer.php) gehört und dieser Name im HTML-Teil bei action="" angegeben werden muss:

         <form action="Formmailer.php" method="post">
    

    Äh. Nein. Falsch. Das sol lassen wie es war (ein Skript mit dem HTML-Teil) und die Formmailer.php aufrufen, um das Formular zu sehen.

    Wenn da steht

    <form method="post">
    

    oder

    <form action="" method="post">
    

    ... dann werden die Daten an die gleiche URL gesandt, von der das Formular geholt wurde, was im Skript auch so vorgesehen ist. Das wurde vom Autor ganz bewusst als eine Datei gestaltet. Man nennt das "Affenformular".

    Du hast sozusagen die Räder vom Auto abgeschraubt und wunderst Dich, dass es nicht geht.

    Ich vermute auch, dass Dein Skript nach dem Versenden des Mails nur deshalb nicht die "Danke-Seite" anzeigt, weil diese schlicht falsch konfiguriert ist.

    Trag doch mal spaßeshalber

    $urlDankeSeite = 'https://forum.selfhtml.org/meta/2015/nov/24/selfhtml-wiki-formmailer-advanced/1655482#m1655482'; 
    

    ein und freu Dich, wenn nach dem Versenden des Mails Dein Beitrag erscheint.

    Jörg Reinholz

    1. Aloha ;)

      Wenn da steht

      <form method="post">
      

      oder

      <form action="" method="post">
      

      ... dann werden die Daten an die gleiche URL gesandt, von der das Formular geholt wurde, was im Skript auch so vorgesehen ist.

      Oh, danke für den Hinweis... Ich bin immer wieder über mich selbst erstaunt und darüber, wie schnell ich solche "Standardaktionen" aus den Augen verliere... Ich hab meine Änderung im Wiki daran angepasst, da steht jetzt...

      Wenn Sie das HTML-Formular vom PHP-Script trennen möchten müssen Sie im Formular unter action die Adresse des Scripts eintragen, ein leerer Eintrag sendet die Daten an die aktuelle URL.

      Grüße,

      RIDER

      --
      Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller Erreichbar manchmal im Self-TS (ts.selfhtml.org) oder sonst - wenn online - auf dem eigenen TeamSpeak-Server (fritz.campingrider.de) oder unter: # Facebook # Twitter # Steam # YouTube # Self-Wiki # ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[