Friedel: Formmailer mit Aktivierungsmail

Hallo,

ich möchte einen Formmailer bauen, der folgende Funktion hat:

Der User schreibt seinen Text und seine E-Mail-Adresse in ein Formular und klickt auf "senden". Dann bekommt er eine E-Mail mit einem Link geschickt. Diesen Link klickt er an und dann wird eine E-Mail an mich geschickt, die den Text und die Absenderadresse enthält.

Ich gehe davon aus, dass ich dazu 2 Php-Seiten brauche, eventuell 3. Zuerst die Seite mit dem Formular. Nach dem Abschicken wird dann eine Info angezeigt, dass die Mail mit dem Bestätigungslink verschickt wurde. Das kann auf der selben Seite passieren, muss aber nicht. Die Formularseite muss dann die Mail mit dem Bestätigungslink erzeugen. Der Link muss natürlich alle nötigen Inhalte als Hash oder sonst wie enthalten. Dieser Link führt dann auf eine 2. (bzw. 3.) Seite, die dann die Mail an mich verschickt und den User darüber informiert, dass das passiert ist.

Ich dachte eigentlich, dass sowas bestimmt schon oft gebaut wurde, und bin etwas verwundert, dass Tante Google mir so gar keine Tipps gibt. Aber vielleicht stelle ich ja nur die falschen Fragen.

Ich habe mich vor langer Zeit intensiv mit Html, CSS und Javascript befasst. Aber alle Techniken in dem Bereich, die es nicht schon seit mindestens 10 Jahren gibt, sind für mich Neuland. Mit Php befasse ich mich erst seit 2 Wochen intensiv. Ich denke nicht, dass ich dieses Vorhaben ohne Vorlagen in absehbarer Zeit realisieren kann.

https://wiki.selfhtml.org/wiki/PHP/Tutorials/Formmailer-Advanced habe ich gelesen (und verstanden), aber noch nicht benutzt. Aber ich brauche ja eine andere Funktionsweise.

  1. Was genau erwartest du denn jetzt von den Forenteilnehmern? Du hast einen konkrete Aufgabe, ich sehe aber kein Problem (ausser Zeit?). Klingt für mich schon nach Spezialfall, so ganz losgelöst. Im Zusammenhang mit Shopsystemen würde ich sagen: klar, das macht jede Bestell-Bestätigungs-Mail, die einen Link auf eine Übersichtseite generiert. Klassisches Beispiel ist auch Rechnung zum Download. Nur dass der Betreiber dann i.d.R. erstmal nicht direkt eingreift.

    Soll das irgendeine Art Spamprotection werden? Grundlegendes Problem: Du musst die Daten irgendwo auf deinem Server speichern, das bekommst du nicht per URL transportiert, und da stehen ggf. auch zu sensible Daten drin. Konzeptidee:

    1. Formulare kennst du ja schon, sieh dir einfach an, wie die in PHP behandelt werden.
    2. Sieh dir SQLite und PDO an, damit bekommst du schnell eine Datenbank an den Start
    3. Zufallscode generieren: openssl-random-pseudo-bytes
    4. alles in der Datenbank speichern
    5. Per PHPMailer eine Mail mit Link zu einer Seite, mit Zufallscode im Link in der URL, an den Absender schicken
    6. Wenn der Link aufgerufen wird, die Mail als "bestätigt" in der DB markieren

    Danach kannst du dir entweder eine Seite bauen, auf der du alle Daten siehst, oder dir die Daten halt selber per Mail zukommen lassen.

    Wenn du daran Vollzeit arbeiten kannst, schaffst du das auch als Anfänger in einer Woche. Danach lässt du ggf. nochmal jemanden mit Erfahrung drübergucken.

    1. Hallo

      Soll das irgendeine Art Spamprotection werden? Grundlegendes Problem: …

      es ist mit der Aufgabenstellung des Ausgangspostings, dass der Kunde seine E-Mail-Adresse eingeben können soll, um sich die erste E-Mail des Vorgangs direkt selbst zuzusenden, das genaue Gegenteil.

      Deine Auflistung mit dem automatischen Versand der Bestätigungs-E-Mail als Bestandteil der Bestellung sieht da schon anders aus.

      Tschö, Auge

      --
      Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
      Toller Dampf voraus von Terry Pratchett
  2. Du hast mit den falschen Begriffen gesucht. "double opt-in php" führte mich u.a. zu:

    https://github.com/backupbrain/double-opt-in-registration-php

    Ob das Zeug auch nur halbwegs sicher ist oder den Vorschriften aus der EU-Richtlinie 2002/58/EC entspricht musst Du selbst prüfen. Ich hoffe, Du kannst auch "Juristerei".

    ##Update!

    Gerade geprüft. Unbrauchbar. Aber Du hast jetzt die Suchbegriffe.

    Mit Php befasse ich mich erst seit 2 Wochen intensiv.

    Wichtiger Hinweis:

    Da bist Du mit Deinem Ansinnen meiner Meinung nach zu früh dran. Das ist eindeutig nichts für Anfänger sondern für Fachleute. Das nahezu zwingende Ergebnis davon, dass Unwissende oder Schludriane "irgendwas mit Emails und Personendaten" programmieren und auf Server stellen kann man regelmäßig bei heise.de nachlesen.

  3. Lieber Friedel,

    das klingt für mich zunächst nach einer Spam-Schleuder. Ich muss überhaupt nicht an Dich senden wollen, denn ich trage einfach der Reihe nach meine Spam-Opfer als Absender ein, dann meinen Werbetext, dann sende ich meinen Müll - und fertig. Was die Opfer dann mit dem Vorwurf anfangen, sie hätten diese Mail an Dich senden wollen, ist mir dann ja egal.

    Liebe Grüße,

    Felix Riesterer.

    1. Das ganze ist, wie schon vermutet, eine Spamabwehr. Die Idee, dass das auch als Spamschleuder verwendet werden kann, halte ich für abwegig. Natürlich könnte ein Spammer fremde E-Mail-Adressen ins Formular eintragen. Damit würde er erreichen, dass die Inhaber dieser Adressen einen Bestätigungslink geschickt bekommen. Seinen Spamtext bekommen sie ja nicht und der Spammer weiß das.

      Zum Beitrag von chorn 05.01.2018 08:41:

      Konzeptidee:

      1. Formulare kennst du ja schon, sieh dir einfach an, wie die in PHP behandelt werden.
      2. Sieh dir SQLite und PDO an, damit bekommst du schnell eine Datenbank an den Start
      3. Zufallscode generieren: openssl-random-pseudo-bytes
      4. alles in der Datenbank speichern
      5. Per PHPMailer eine Mail mit Link zu einer Seite, mit Zufallscode im Link in der URL, an den Absender schicken
      6. Wenn der Link aufgerufen wird, die Mail als "bestätigt" in der DB markieren
      1. Mit Formularverarbeitung habe ich mich schon befasst und Grundkenntnisse.
      2. Datenbank habe ich und kann sie natürlich entsprechend erweitern.
      3. Mit openssl-random-pseudo-bytes habe ich mich noch nicht befasst. Bisher habe ich bei vergleichbaren Fällen einfach mit irgend einem Algorithmus einen Wert aus der Serverzeit errechnet. Das sehe ich mir an.
      4. bis 6. So werde ich es wahrscheinlich machen müssen. Ich hatte gehofft, dass es anders geht.

      @ Auge 05.01.2018 09:21: Wie kommst du auf Bestellungen? Bei mir kann man nichts bestellen. Es geht um Beschwerden.

      @ Regina Schaukrug 05.01.2018 09:41:

      Du hast mit den falschen Begriffen gesucht…

      Dachte ich mir schon. Danke für den Suchbegriff.

      Da bist Du mit Deinem Ansinnen meiner Meinung nach zu früh dran. Das ist eindeutig nichts für Anfänger sondern für Fachleute.

      Das sehe ich auch so. Deshalb habe ich ja hier nach Rat gefragt und bastle nicht auf eigene Faust los. Das brauche ich als erstes, wen die Site online geht. Die restlichen Inhalte kann ich auch nach uns nach liefern. Aber das Impressum und die wichtigsten Kommunikationsmittel müssen von Anfang an sein.

      @ Felix Riesterer 05.01.2018 09:44: ??? Wozu soll ein Spammer sowas machen. Damit könnte er den Empfängern ja nicht seinen Spam schicken, sondern eine Mail nach dem Schema

      Sie möchten eine Nachricht an Friedel schicken. Benutzen Sie den folgenden Link, damit die Nachricht zugestellt wird. Falls Sie mir keine Nachricht schicken wollen, hat sich jemand für Sie ausgegeben und versucht in Ihrem Namen… In dem Fall ignorieren Sie diesem Mail einfach. Die bei mir gespeicherten Daten (Ihr Name und Ihre E-Mail-Adresse) werden in 3 Tagen automatisch aus unserer Datenbank gelöscht, wenn Sie den Link nicht benutzen.

      Natürlich werde ich das Formular trotzdem mit den Spamschutzmechanismen versehen, aber ich kann mir nicht vorstellen, wie man das ganze als Spamschleuder verwenden will. Es wäre imho wenig sinnvoll, den Text aus dem Formular auch an den (vermeintlichen) Absender zu schicken. Der sollte diese Infos doch schon haben.

      1. Hallo Friedel,

        ??? Wozu soll ein Spammer sowas machen. Damit könnte er den Empfängern ja nicht seinen Spam schicken, sondern eine Mail nach dem Schema

        Sie möchten eine Nachricht an Friedel schicken. Benutzen Sie den folgenden Link, damit die Nachricht zugestellt wird. Falls Sie mir keine Nachricht schicken wollen, hat sich jemand für Sie ausgegeben und versucht in Ihrem Namen… In dem Fall ignorieren Sie diesem Mail einfach. Die bei mir gespeicherten Daten (Ihr Name und Ihre E-Mail-Adresse) werden in 3 Tagen automatisch aus unserer Datenbank gelöscht, wenn Sie den Link nicht benutzen. Natürlich werde ich das Formular trotzdem mit den Spamschutzmechanismen versehen, aber ich kann mir nicht vorstellen, wie man das ganze als Spamschleuder verwenden will. Es wäre imho wenig sinnvoll, den Text aus dem Formular auch an den (vermeintlichen) Absender zu schicken. Der sollte diese Infos doch schon haben.

        Du solltest es vermeiden, unaufgefordert Mails an irgendjemand zu versenden (und so sieht das aus, wenn das jemand in deinem Namen tut).
        Du solltest es vermeiden, die Zustellung von Nachrichten an dich zu erschweren.

        Bis demnächst
        Matthias

        --
        Rosen sind rot.
        1. Wie genau hilft ihm das bei seinem Problem (anonymer Beschwerder) weiter?

          Was sind seine Alternativen zum Double-Opt-In?

          Weisst du ggf. wie das Problem der Spammails von anderen Seiten mit Registrierungsmöglichkeit vermieden wird? Hälst du Postident o.Ä. hier für angemessen?

      2. Hallo

        Die Idee, dass das auch als Spamschleuder verwendet werden kann, halte ich für abwegig. Natürlich könnte ein Spammer fremde E-Mail-Adressen ins Formular eintragen. Damit würde er erreichen, dass die Inhaber dieser Adressen einen Bestätigungslink geschickt bekommen. Seinen Spamtext bekommen sie ja nicht und der Spammer weiß das.

        Zitat aus deinem eigenen Konzept im Ausgangsposting:

        Der User schreibt seinen Text und seine E-Mail-Adresse in ein Formular und klickt auf "senden".

        Der Benutzer – egal ob, wie ich vermutete, Besteller oder, wie sich nun herausstellt, Beschwerdeführer – kann also eigenen Text in das Formular einfügen, der in die E-Mail übernommen wird. Eine Spamschleuder per excellence, wie von mir und Felix vermutet.

        @ Felix Riesterer 05.01.2018 09:44: ??? Wozu soll ein Spammer sowas machen. Damit könnte er den Empfängern ja nicht seinen Spam schicken,

        Nach den Informationen, die bis zu deinem Posting, auf das ich gerade antworte, zur Verfügung standen, kann ein Spamversender sehr wohl seine eigenen Nachrichten versenden.

        Natürlich werde ich das Formular trotzdem mit den Spamschutzmechanismen versehen, aber ich kann mir nicht vorstellen, wie man das ganze als Spamschleuder verwenden will. Es wäre imho wenig sinnvoll, den Text aus dem Formular auch an den (vermeintlichen) Absender zu schicken.

        Wenn du nun, entgegen den Aussagen im Ausgangsposting, einen festen Text versenden willst, mag das stimmen.

        Der sollte diese Infos doch schon haben.

        Warum sollte er? Irgendwer schickt über dein Formular an irgendwen eine Nachricht heraus. Entweder mit einem eigenen oder einem vorgegebenen Text. Warum sollte irgendein Empfänger „schon“ Infos von dir haben?

        Tschö, Auge

        --
        Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
        Toller Dampf voraus von Terry Pratchett
        1. @ Matthias Apsel 05.01.2018 11:42: Das werde ich nicht beantworten. Ich glaube nicht, dass das möglich wäre, ohne gegen die Nutzungsregeln hier zu verstoßen.

          @ Auge 05.01.2018 11:42: Nein, der Text aus dem Formular wird nicht an die Absenderadresse geschickt. Wozu denn? Das habe ich nicht geschrieben und das habe ich auch nicht vor. Das wäre tatsächlich eine Spamschleuder. Wenn du zitierst, solltest du nicht das Zitat vor der relevanten Stelle abbrechen. Du hast zitiert:

          Der User schreibt seinen Text und seine E-Mail-Adresse in ein Formular und klickt auf "senden".

          Geschrieben habe ich:

          Der User schreibt seinen Text und seine E-Mail-Adresse in ein Formular und klickt auf "senden". Dann bekommt er eine E-Mail mit einem Link geschickt. Diesen Link klickt er an und dann wird eine E-Mail an mich geschickt, die den Text und die Absenderadresse enthält.

          @ chorn 05.01.2018 11:58: ??? Deinen Beitrag verstehe ich nicht. Ich habe keine Ahnung, auf was sich "das" und "ihm" in der ersten Frage beziehen und was mit "anonymer Beschwerder" gemeint sein könnte. Für anonyme Beschwerden werde ich sicher nichts anbieten. Dafür gibt es die Telefonseelsorge und ähnliches. Was du mit deiner 2. Frage willst, verstehe ich auch nicht. Ist das der Versuch meine Frage anders zu formulieren? Und was hat Postident mit meinem Formmailer zu tun?

          1. Du antwortest auf Fragen die jemand anderem gestellt wurden. Schalt oben mal auf "nested-Ansicht".

            1. @ chorn 05.01.2018 12:29:

              Du antwortest auf Fragen die jemand anderem gestellt wurden. Schalt oben mal auf "nested-Ansicht".

              Wahrscheinlich konnte ich deshalb nichts mit den Fragen anfangen. Wo soll ich denn auf "nested-Ansicht" klicken? Die Zeichenfolge "nested" kommt bisher auf dieser Seite nur in deinem Beitrag vor.

              1. Hallo,

                schau mal was be idir unterhalb von der Navigation steht:

                1. Hallo Bernd,

                  Die nested-Ansicht ist die default-Darstellung. Deshalb wird da an dieser Stelle wohl „Thread-Ansicht“ stehen.

                  Bis demnächst
                  Matthias

                  --
                  Rosen sind rot.
          2. Hallo

            @ Auge 05.01.2018 11:42: Nein, der Text aus dem Formular wird nicht an die Absenderadresse geschickt. Wozu denn? Das habe ich nicht geschrieben und das habe ich auch nicht vor. Das wäre tatsächlich eine Spamschleuder. Wenn du zitierst, solltest du nicht das Zitat vor der relevanten Stelle abbrechen. Du hast zitiert:

            Der User schreibt seinen Text und seine E-Mail-Adresse in ein Formular und klickt auf "senden".

            Geschrieben habe ich:

            Der User schreibt seinen Text und seine E-Mail-Adresse in ein Formular und klickt auf "senden". Dann bekommt er eine E-Mail mit einem Link geschickt. Diesen Link klickt er an und dann wird eine E-Mail an mich geschickt, die den Text und die Absenderadresse enthält.

            Wo widerspricht das meinem Zitat? Du sagst: Der Benutzer schreibt seinen Text, hinterlässt seine E-Mail-Adresse und klickt auf senden. Dass er eine E-Mail mit einem Link erhält, wie du hervorhebst, heißt nicht automatisch, dass der vorher erwähnte Text nicht übertragen wird. Aber danke für die Klarstellung deiner ursprünglichen Aussage.

            Tschö, Auge

            --
            Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
            Toller Dampf voraus von Terry Pratchett
          3. Lieber Friedel,

            @ Matthias Apsel 05.01.2018 11:42: [...] @ Auge 05.01.2018 11:42:

            dieses Forum ist ein echtes Forum und kein fälschlicherweise als "Forum" bezeichnetes Board. Du bist wohl die Benutzung von Boards gewohnt... aber es ist nie zu spät dazu zu lernen.

            Geschrieben habe ich:

            Der User schreibt seinen Text und seine E-Mail-Adresse in ein Formular und klickt auf "senden". Dann bekommt er eine E-Mail mit einem Link geschickt. Diesen Link klickt er an und dann wird eine E-Mail an mich geschickt, die den Text und die Absenderadresse enthält.

            Hast Du die bereits genannten Implikationen Deiner Idee noch immer nicht eingesehen? Du beschreibst in der Tat eine Spam-Schleuder, da das Formular von jedem (auch einem Programm) ausgefüllt werden kann. Damit wäre Missbrauch möglich, da der Erhalt der Bestätigungsmail unter dem Missbrauchsaspekt irrelevant ist. Ein Spammer interessiert sich nur für's Ausfüllen und Absenden des Formulars - und da darf er einen freien Text und eine beliebige Mailadresse eintragen.

            [Edit]Ich nehme alles zurück und gelobe feierlich an meiner Lesekompetenz hart zu arbeiten!

            Es steht nichts davon in Deinem Zitat, dass der User seinen Freitext in der automatisch zugesandten Mail mit dem Bestätigungslink zu sehen bekommt. Das entkräftet selbstverständlich den Vorwurf der Spam-Schleuder vollkommen. Mein Fehler.[/Edit]

            Für anonyme Beschwerden werde ich sicher nichts anbieten. Dafür gibt es die Telefonseelsorge und ähnliches.

            Nimm's mir bitte nicht übel, aber im Kontext dieses Threads klingt das an dieser Stelle für mich durchaus arrogant. Wofür die Telefonseelsorge da ist und wofür nicht, das überlassen wir lieber denen, denn sie leisten eine sehr wichtige und von den allermeisten Menschen nicht genügend beachtete oder gar wert geschätzte Arbeit!

            Du wirst Dich mit anonymen Beschwerden sehr wohl auseinandersetzen müssen, denn hinter "quatschkopf@byom.de" siehst Du einfach nicht, wer Dir da über Dein Formular etwas mailt.

            Liebe Grüße,

            Felix Riesterer.

            1. Hallo

              Es steht nichts davon in Deinem Zitat, dass der User seinen Freitext in der automatisch zugesandten Mail mit dem Bestätigungslink zu sehen bekommt. Das entkräftet selbstverständlich den Vorwurf der Spam-Schleuder vollkommen. Mein Fehler.

              Nun ja, Lesekompetenz hin oder her, die Erwähnung des Freitextes direkt vor der Beschreiung des Absendens der Nachricht an eine frei festgelegte E-Mail-Adresse, hat ja nicht nur dich vermuten lassen, dass der Freitext Bestandteil der E-Mail sein wird. Ich war ja auf dem selben Dampfer zugegen.

              Bei der Formulierung technischer Sachverhalte ist auch eine Formulierungskompetenz gefragt. Das durfte ich bei meiner letzten Auseinandersetzung mit Gunnar (ab dem verlinkten Posting) ja auch wieder einmal erfahren. Nicht eindeutige Formulierungen führen zu Missverständnissen.

              Tschö, Auge

              --
              Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
              Toller Dampf voraus von Terry Pratchett