windwetter: Frage zum Wiki-Artikel „Formulare erstellen und gestalten“

problematische Seite

Hallo an alle

Beim Formular frage ich mich wo die Ziel eMail eingetragen wird, an die das Formular gesendet werden soll?

Danke für Eure Hilfe und Antwort an wind@windwetter.ch

                  <!DOCTYPE html>
<html>

<head>
        <title>Frickl - SELFHTML-Wiki</title>
        <style type="text/css" media="screen">
                .js fieldset {
                        background: white;
                        border: 1px solid black;
                        border-radius: 0.5em;
                        margin: 0 0 1rem 0;
                }

                .js legend {
                        background: white;
                        border: 1px solid black;
                        border-radius: 0.5rem;
                        box-shadow: 0 0 0.5rem #888;
                        padding: 0.5rem 1rem;
                }

                .js #article-1,
                .js #article-2 {
                        width: 2rem;
                }

                .js #recipient-zip,
                .js #buyer-zip {
                        width: 2rem;
                }

                .js dt {
                        font-weight: bold;
                        padding: 0 0 0.5em 3em;
                }

                .js dt:not(:first-of-type) {
                        margin: 2em 0 0 0;
                }

                .js dd {
                        margin: 0;
                        padding: 0;
                }

                .js dd ul {
                        list-style: none;
                        padding: 0;
                }

                .js dd li {
                        margin: 0;
                        padding: 0;
                }

                .js dd label:first-of-type {
                        display: inline-block;
                        text-align: right;
                        width: 8em;
                }

                .js #message {
                        height: 5rem;
                        width: calc(100% - 1rem);
                }

        </style>
        <script type="text/javascript" src="/extensions/Selfhtml/js/jquery/jquery-1.11.1.min.js"></script>
        <script type="text/javascript">
                //<![CDATA[
                document.addEventListener("DOMContentLoaded", function () {
                        // button zum ein- und ausschalten von CSS-Regeln
                        var b = document.createElement("button"),
                                f = document.forms[0],
                                onClick;
                        onClick = function () {
                                if (f.hasAttribute("class")) {
                                        f.removeAttribute("class");
                                        b.innerHTML = "CSS-Regeln zum Verschönern einschalten";
                                } else {
                                        f.setAttribute("class", "js");
                                        b.innerHTML = "CSS-Regeln deaktivieren";
                                }
                        };
                        b.addEventListener("click", onClick);
                        b.type = "button";
                        document.getElementsByTagName("main")[0].appendChild(document.createElement(
                                        "p"))
                                .appendChild(b);
                        f.setAttribute("class", "js");
                        onClick();
                });
                //]]>

        </script>
</head>

<body>
        <h1>Bestell-Formular mit verschiedenen Abschnitten</h1>
        <main>
                <form action="">
                        <fieldset>
                                <legend>Ware</legend>
                                <ul>
                                        <li>
                                                <label for="article-1">Wetterstation</label>
                                                <input id="article-1" name="article-1" type="number"
                                                value="0"> </li>
                                        <li>
                                                <label for="article-2">SIM Karte für 1 Jahr</label>
                                                <input id="article-2" name="article-2" type="number"
                                                value="0"> </li>

					<li>
                                                <label for="article-3">Aufbau / Montage</label>
                                                <input id="article-2" name="article-2" type="number"
                                                value="0"> </li>
                                </ul>
                        </fieldset>
                        <fieldset>
                                <legend>Bezahlung</legend>
                                <p>
                                        <label for="payment">Art der Bezahlung</label>
                                        <select id="payment" name="payment">
                                                <option value="ae">American Express Card</option>
                                                <option value="master">MasterCard</option>
                                                <option value="visa">VISA</option>
                                                <option value="prepayment">Vorkasse</option>
						 <option value="visa">Rechnung</option>
                                        </select>
                                </p>
                                <p>
                                        <input id="email-receipt" name="email-receipt" type="checkbox">
                                        <label for="email-receipt">Quittung per E-Mail</label>
                                        <label for="email">an folgende Adresse</label>
                                        <input id="email" name="email" type="email"> </p>
                        </fieldset>
                        <fieldset>
                                <legend>Versand</legend>
                                <dl> <dt>Lieferanschrift</dt>
                                        <dd>
                                                <ul>
                                                        <li>
                                                                <label for="recipient-name">Name</label>
                                                                <input id="recipient-name" name="recipient-name"> </li>
                                                        <li>
                                                                <label for="recipient-address">Anschrift</label>
                                                                <input id="recipient-address" name="recipient-address"> </li>
                                                        <li>
                                                                <label for="recipient-zip">PLZ</label>
                                                                <input id="recipient-zip" name="recipient-zip">
                                                                <label for="recipient-city">Ort</label>
                                                                <input id="recipient-city" name="recipient-city"> </li>
                                                </ul>
                                        </dd> <dt>Rechnungsanschrift</dt>
                                        <dd>
                                                <ul>
                                                        <li>
                                                                <label for="buyer-name">Name</label>
                                                                <input id="buyer-name" name="buyer-name"> </li>
                                                        <li>
                                                                <label for="buyer-address">Anschrift</label>
                                                                <input id="buyer-address" name="buyer-address"> </li>
                                                        <li>
                                                                <label for="buyer-zip">PLZ</label>
                                                                <input id="buyer-zip" name="buyer-zip">
                                                                <label for="buyer-city">Ort</label>
                                                                <input id="buyer-city" name="buyer-city"> </li>
                                                </ul>
                                        </dd>
                                </dl>
                        </fieldset>
                        <fieldset>
                                <legend>Zusatz</legend>
                                <p>
                                        <label for="message">Ihre Nachricht an uns</label>
                                        <textarea id="message"></textarea>
                                </p>
                        </fieldset>
                        <p>
                                <button>jetzt Kostenpflichtig bestellen</button>
                        </p>
                </form>
        </main>
</body>

</html>

  1. problematische Seite

    Hallo windwetter,

    Diese Formulare werden nicht per Mail versendet.

    Danke für Eure Hilfe und Antwort an wind@windwetter.ch

    Und Antworten auf Fragen auch nicht. Dies ist ein öffentlicher Raum.

    Bis demnächst
    Matthias

    --
    Rosen sind rot.
    1. problematische Seite

      wenn nicht per eMail wie dann ?

      1. problematische Seite

        wenn nicht per eMail wie dann ?

        Wie bereits geschrieben über den Swiftmailer Ein Beispiel findest du auch hier: https://wiki.selfhtml.org/wiki/PHP/Anwendung_und_Praxis/Formmailer-Advanced

        Ein bisschen einarbeiten musst du dich schon!

      2. problematische Seite

        Hallo windwetter,

        wenn nicht per eMail wie dann ?

        Also eigentlich schon per Mail, aber das Wiki-Beispiel ist dazu gedacht, eine Mail an eine auf dem Server festgelegte Adresse zu senden. Mit Swiftmailer eben. Idee ist: Der User gibt was ein, und dein Forum schickt Dir eine Mail, dass da jemand was will.

        Wenn Du auf einem solchen Formular eine freie Eingabe von Mailadressen vorsiehst, produzierst Du eine Spam-Schleuder für die Skript-Kiddies dieser Welt und findest dich ratzfatz auf der Blacklist der Mailprovider wieder, weil aus Sicht der Mailprovider ja dein Forum der Spam-Versender ist. Und stell Dir vor, irgendwer schreibt strafrelevante Dinge hinein und trägt deinen besten Freund (oder deine(n) Lebenspartner(in)) als Empfänger ein!

        Rolf

        --
        sumpsi - posui - clusi
  2. problematische Seite

    Hallo,

    das Formular wird so nicht verschickt. Dazu schaust du dir bitte den Swiftmailer an. Damit kannst du Formulare an eine Mail Adresse senden lassen. Ist sehr einfach einzubauen und tut genau das was du brauchst. Ich nutze diesen schon seit Jahren.

    Wenn du weitere Fragen hast, einfach fragen.

    1. problematische Seite

      $ composer require swiftmailer/swiftmailer ?????

      1. problematische Seite

        $ composer require swiftmailer/swiftmailer ?????

        Ich selber habe ihn nie über den composer heruntergeladen, da ich diesen hasse.

        Du kannst ihn dir über GitHub herunterladen:
        https://github.com/swiftmailer/swiftmailer

        Nachtrag: Wenn dir der Swiftmailer zu kompliziert ist, kannst du auch die PHP Mail Funktion verwenden: http://php.net/manual/de/function.mail.php Ein Video dazu findest du auf Youtube: https://www.youtube.com/watch?v=2HGYg-tVGlo

  3. problematische Seite

    Hello,

    so pauschal, wie Matthias möchte ich den Versand per eMail nicht ausschließen, auch wenn er damit viel weitere Diskussion erspart.

    Derartige Daten sollten nur per POST-Methode versendet werden (method="POST").
    Du kannst als Ziel aber trotzdem im Action-Attribut des Forumulars einsetzen:

    action="mailto:wind@windwetter.ch" und mal ausprobieren, was passiert ;-)

    Es funktioniert nur, wenn aud sem betreffenden Rechner ein eMail-Client eingerichtet ist.

    Üblicherwise würde man dort aber eine Ressource angeben, die per http/s erreichbar ist, also z. B. ein PHP-Skript in der eigenen Domain, oder auch in einer fremden (mit "https://" davor.)

    Liebe Grüße
    Tom S.

    --
    Es gibt nichts Gutes, außer man tut es!
    Das Leben selbst ist der Sinn.
    1. problematische Seite

      Hallo und Danke an diejenigen die sich konstruktiv einbringen... ich habe nun folgendes:

      <form action="mailto:wind@windwetter.ch" method="post">

      Es wird auch beim Klick auf den Button eine eMail vorbereitet - beim absenden ist diese aber komplett leer.…

      Bin dankbar über weitere Hilfe

      1. problematische Seite

        Warum willst du so ein großes Formular unbedingt über ein Mail Programm verschicken? Nicht jeder User hat ein Programm installiert, viele rufen ihre Mails direkt über ein Webmail ab.

        Mach es doch direkt richtig!

      2. problematische Seite

        Hello,

        [•••]
        dann ergänze mal <form ••• enctype="text/plain"> und schau, was dann passiert.

        Liebe Grüße
        Tom S.

        --
        Es gibt nichts Gutes, außer man tut es!
        Das Leben selbst ist der Sinn.
        1. problematische Seite

          Hi,

          dann ergänze mal <form ••• enctype="text/plain"> und schau, was dann passiert.

          dasselbe wie ohne. Das Mailprogramm (sofern überhaupt vorhanden) interessiert sich nicht für die Formularfelder, bei mailto muß alles in der URL stehen.

          Ein weiterer Grund, das nicht per action="mailto:" zu machen.

          cu,
          Andreas a/k/a MudGuard

          1. problematische Seite

            Hello,

            dann ergänze mal <form ••• enctype="text/plain"> und schau, was dann passiert.

            dasselbe wie ohne. Das Mailprogramm (sofern überhaupt vorhanden) interessiert sich nicht für die Formularfelder, bei mailto muß alles in der URL stehen.

            Wie Du das jetzt genau meinst, weiß ich nicht, aber ich habe eben endlich mal Zeit gefunden, das nochmals nachzuvollziehen (auszuprobieren)!

            Selbstverständlich übergeben moderne Browser auch die Formularfelder an den Mailer. Wie das intern funktioniert, habe ich nicht geprüft, aber aus

            
                <form method="post" action="mailto:tschmieder@bitworks.de" enctype="text/plain">
                    <p><span class="description">Name: </span><input name="data[name]"></p>
                    <p><span class="description">Vorname: </span><input name="data[vorname]"></p>
                    <p><span class="description">Ort: </span><input name="data[ort]"></p>
                                
                    <p><button type="submit">Absenden</button></p>
                </form>    
            
            

            wird im FF der Mailer geöffnet und es steht dann die Entwurfs-Mail

            Screenshot von Mail-Entwurf aus HTML-Formulat

            dort.

            Wie man sieht, füllt Firefox das fehlende Subject mit einem eigenen Text auf!

            Liebe Grüße
            Tom S.

            --
            Es gibt nichts Gutes, außer man tut es!
            Das Leben selbst ist der Sinn.
            1. problematische Seite

              Hallo TS,

              Selbstverständlich übergeben moderne Browser auch die Formularfelder an den Mailer. Wie das intern funktioniert, habe ich nicht geprüft, aber aus

                  <form method="post" action="mailto:tschmieder@bitworks.de" enctype="text/plain">
                      <p><span class="description">Name: </span><input name="data[name]"></p>
                      <p><span class="description">Vorname: </span><input name="data[vorname]"></p>
                      <p><span class="description">Ort: </span><input name="data[ort]"></p>
                                  
                      <p><button type="submit">Absenden</button></p>
                  </form>    
              

              Selbstverständlich sollten alle input-Felder durch ein label beschriftet sein.

              <form method="post" action="mailto:tschmieder@bitworks.de" enctype="text/plain">
                  <label>Name: <input name="data[name]"></label>
                  <label>Vorname: <input name="data[vorname]"></label>
                  <label>Ort: <input name="data[ort]"></label>
                              
                  <button>Absenden</button>
              </form>
              

              Bis demnächst
              Matthias

              --
              Rosen sind rot.
              1. problematische Seite

                Hello,

                Selbstverständlich sollten alle input-Felder durch ein label beschriftet sein.

                ... was aber selbstverständlich überhaupt nichts mit dem Thema "Mailversand per Form und Mail-Client" zu tun hat!

                Liebe Grüße
                Tom S.

                --
                Es gibt nichts Gutes, außer man tut es!
                Das Leben selbst ist der Sinn.
                1. problematische Seite

                  Hallo TS,

                  Selbstverständlich sollten alle input-Felder durch ein label beschriftet sein.

                  ... was aber selbstverständlich überhaupt nichts mit dem Thema "Mailversand per Form und Mail-Client" zu tun hat!

                  Oh wohl. Ohne bedienbares Formular können keine sinnvollen Daten versendet werden.

                  Bis demnächst
                  Matthias

                  --
                  Rosen sind rot.
                2. problematische Seite

                  @@TS

                  Selbstverständlich sollten alle input-Felder durch ein label beschriftet sein.

                  ... was aber selbstverständlich überhaupt nichts mit dem Thema "Mailversand per Form und Mail-Client" zu tun hat!

                  Ob das nun damit zu tun hat oder nicht, ist irrelevant.

                  Hier im Forum legen wir wert auf brauchbare Antworten, die bei Bedarf auch über den Tellerrand des Fragestellers hinausgehen.

                  Bei Beschriftungen von Eingabefeldern besteht dieser Bedarf. Wird der nicht gedeckt, ist die Antwort unbrauchbar.

                  LLAP 🖖

                  --
                  “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
            2. problematische Seite

              wird im FF der Mailer geöffnet und es steht dann die Entwurfs-Mail

              Screenshot von Mail-Entwurf aus HTML-Formulat

              Warum schwärzt Du eigentlich für jeden, jederzeit im Netz frei zugängliche Informationen?

            3. problematische Seite

              hi,

              wird im FF der Mailer geöffnet und es steht dann die Entwurfs-Mail

              Screenshot von Mail-Entwurf aus HTML-Formulat

              Das ändert sich schlagartig, wenn man bei einer action="mailto..." mit enctype="text/plain" die method nicht auf POST setzt sondern auf GET belässt und ein <input name="subject" value="Feedback von der Webseite"> einbaut. Dann wird das subject übernommen und da eingesetzt wo es hingehört, zumindest klappt das bei mir. MfG

  4. problematische Seite

    Hallo,

    das Wichtigste an einem <form> it das action-Attribut. Damit wird nämlich festgelegt, wohin bei einem Submit der Request geht. Setzt Du action="" oder lässt Du dieses Attribut weg, geht der Request an die aktuell im Browser geladene Location (URL).

    D.h., daß diese Seite, nämlich diejenige die den Request bekommt, in der Lage sein sollte, diesen Request zu verarbeiten, einschließlich aller Parameter die der Request mit sich bringt. So finden sich sämtliche Formulareingaben in den Parametern wieder, genauso wie es der Wikiartikel beschreibt.

    Außerdem beinhaltet der Wikiartikel einen weiterführenden Link was die serverseitige Bearbeitung von Formulareingaben betrifft.

    Ds Versenden von Formulareingaben in einer Mail ist also nur eine besondere Art und Weise der serverseitigen Verarbeitung von Formulareingaben. MfG

    1. problematische Seite

      @@pl

      Setzt Du action="" oder lässt Du dieses Attribut weg, geht der Request an die aktuell im Browser geladene Location (URL).

      Nix mit so oder so.

      Setzst Du action="", begehst du einen Fehler. Das ist kein gültiges HTML. Das action-Attribut darf keinen leeren Wert haben, sondern der Wert muss ein nicht-leerer URL sein. [Spec]

      LLAP 🖖

      --
      “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
      1. problematische Seite

        hi,

        Setzst Du action="", begehst du einen Fehler. Das ist kein gültiges HTML. Das action-Attribut darf keinen leeren Wert haben, sondern der Wert muss ein nicht-leerer URL sein. [Spec]

        Es wäre gut, den Wiki Artikel diesbezüglich entsprechend zu ergänzen. MfG

        1. problematische Seite

          Hallo pl,

          Setzst Du action="", begehst du einen Fehler. Das ist kein gültiges HTML. Das action-Attribut darf keinen leeren Wert haben, sondern der Wert muss ein nicht-leerer URL sein. [Spec]

          Es wäre gut, den Wiki Artikel diesbezüglich entsprechend zu ergänzen. MfG

          Das Tutorial geht auf die Fragestellung "Senden an das aktuell im Browser geöffnete Dokument" nicht ein und das ist meiner Meinung nach auch richtig so. Im Artikel form wird darauf hingewiesen und auch in den entsprechenden Referenzen steht es richtig.

          Bis demnächst
          Matthias

          --
          Rosen sind rot.
          1. problematische Seite

            Hallo,

            Setzst Du action="", begehst du einen Fehler. Das ist kein gültiges HTML. Das action-Attribut darf keinen leeren Wert haben, sondern der Wert muss ein nicht-leerer URL sein. [Spec]

            Es wäre gut, den Wiki Artikel diesbezüglich entsprechend zu ergänzen. MfG

            Das Tutorial geht auf die Fragestellung "Senden an das aktuell im Browser geöffnete Dokument" nicht ein und das ist meiner Meinung nach auch richtig so.

            Es sollte wenigstens einmal der Begriff MVC fallen in diesem Zusammenhang denke ich. Aber es ist euer Wiki. MfG

            1. problematische Seite

              Hallo pl,

              Es sollte wenigstens einmal der Begriff MVC fallen in diesem Zusammenhang denke ich. Aber es ist euer Wiki.

              Ich sehe deiner Zuarbeit gespannt entgegen. Bedenke bitte die Zielgruppe des Tutorials.

              Bis demnächst
              Matthias

              --
              Rosen sind rot.