Gast: Mail-Formular nur einmal absenden

Hallo,

habe ein Mailformular auf meiner Seite, um die Seite zu empfehlen.

Nach Absenden der Mail erscheint das Formular wieder mit geleertem Mail-Feld, damit man weitere Freunde anschreiben kann.

Nun ist es bei Opera so, dass beim Aktualisieren der Seite (Schaltfläche) die E-Mail erneut verschickt wird. Wie kann ich das verhindern? Ich möchte die Mails nicht speichern und abgleichen.

Gast

  1. Lieber)Gast,

    nutze einen serverseitigen Mechanismus, der den Besucher wiedererkennt (in PHP "Session" genannt) und das mehrfache Versenden blockiert.

    Kannst ja mal mein Mailformular ausprobieren, wenn Du willst.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo Felix,

      nutze einen serverseitigen Mechanismus, der den Besucher wiedererkennt (in PHP "Session" genannt) und das mehrfache Versenden blockiert.

      Der Mail-Versand ist ja die Ausnahme. Da müsste ich also für jede Anzeige vorbeugend eine Session aufmachen, falls ...

      Geht das nicht unkomplizierter?

      Habe mich mir Sessions noch nicht so beschäftigt. Wie lange werden die aufbewahrt? Muss ich mich um die Entsorgung kümmern?

      Gast

      1. ola,

        Habe mich mit Sessions noch nicht so beschäftigt. Wie lange werden die aufbewahrt?

        Sessions werden so lange aufbewahrt, bis der Besucher den Browser schließt. Oder du es in irgendeiner Weise vorgibst, es geht aber nie länger als bis der Benutzer den Browser schließt.

        Muss ich mich um die Entsorgung kümmern?

        Nur wenn du möchtest. Das kommt immer auf das Projekt an. Die Arbeit mit Sessions ist sehr simpel.
        Du könntest zum Beispiel in einer Session speichern, wann der Besucher den "Beitrag" abgeschickt hat. Die Variable gilt dann auf allen deinen Seiten. Also auch wenn er den "Beitrag" abschickt, dann auf der Webseite rumsurft und später zum Kontaktformular zurückkommt, kannst du vergleichen in welchem zeitlichen Abstand er seinen letzten "Beitrag" abgesendet hat. Wenn der Abstand dir zu gering ist, kannst du ihn darauf hinweisen und das Abschicken blockieren.

        Schau mal hier was es alles gibt:
        http://de3.php.net/manual/de/book.session.php

        Du kannst Sessions als "Benutzervariablen" ansehen.

        1. Tach!

          Habe mich mit Sessions noch nicht so beschäftigt. Wie lange werden die aufbewahrt?
          Sessions werden so lange aufbewahrt, bis der Besucher den Browser schließt. Oder du es in irgendeiner Weise vorgibst, es geht aber nie länger als bis der Benutzer den Browser schließt.

          Das ist so nicht richtig. Die Session-Daten werden auf dem Server aufgehoben. Der bekommt von einem Schließen des Browsers nichts mit. Beim Anwender befindet sich nur eine Session-ID, meist in Form eines Cookies. Und diesem wird lediglich per Default mitgegeben, dass der Browser ihn am Ende der Sitzung verwerfen soll. Nichts hindert den Webseitenbetreiber daran, eine andere Ablaufzeit anzugeben, aufgrund der der Browser den Cookie dauerhaft ablegt. Ein Session-Cookie unterscheidet sich da nicht von einem Cookie zu anderen Zwecken.

          Muss ich mich um die Entsorgung kümmern?
          Nur wenn du möchtest.

          Manchmal muss man sich jedoch um die Nichtentsorgung kümmern. Insbesondere dann, wenn der Pfad, in dem die Session-Dateien gespeichert werden auf einem Server mit mehreren Projekten nicht für jedes Projekt separat eingestellt ist. Die Daten abgelaufener Sessions werden per Garbage Collection entsorgt, die bei jedem Session-Start losläuft (oder nur jedem x-ten, was konfigurierbar ist). Wenn die Projekte nun unterschiedliche Minimal-Lebensdauern eingestellt haben, löscht das Projekt mit dem niedrigsten Wert unter Umständen noch benötigte Session-Dateien anderer Projekte weg. Abhilfe ist hier, den eigenen Session-Save-Path auf ein eigenes Verzeichnis zu konfigurieren.

          dedlfix.

    2. Moin!

      nutze einen serverseitigen Mechanismus, der den Besucher wiedererkennt (in PHP "Session" genannt) und das mehrfache Versenden blockiert.

      Eine schlechte Idee. Funktioniert zwar auch, aber die Frage ist: Wie kriegst du in der Session mit, dass die Blockade wieder aufzuheben ist?

      - Sven Rautenberg

      1. Tach!

        nutze einen serverseitigen Mechanismus, der den Besucher wiedererkennt (in PHP "Session" genannt) und das mehrfache Versenden blockiert.

        Eine schlechte Idee.

        Unterschreibe ich voll mit.

        Funktioniert zwar auch, aber die Frage ist: Wie kriegst du in der Session mit, dass die Blockade wieder aufzuheben ist?

        Naja: $_POST -> JSON (oder wie auch immer "stringifizieren") -> md5 und das als String in die Session; vor dem nächsten Versandversuch vergleichen. "Ups. Sie haben diese Nachricht doch schon versendet?"

        Ist machbar, die Frage ist aber: "Wozu der Aufwand, wenn es einfacher geht?" Nach dem Absenden der Mail geht es via header zur Seite mit der Info, dass die Mail versendet wurde, von dort via Link oder Javascript (location.href=foo) zum Formular. Da kann man sich und dem System das Sitzungsgeraffel ersparen.

        Jörg Reinholz

        1. Lieber Jörg Reinholz,

          Funktioniert zwar auch, aber die Frage ist: Wie kriegst du in der Session mit, dass die Blockade wieder aufzuheben ist?

          Naja: $_POST -> JSON (oder wie auch immer "stringifizieren") -> md5 und das als String in die Session; vor dem nächsten Versandversuch vergleichen. "Ups. Sie haben diese Nachricht doch schon versendet?"

          so bescheuert bin ich dann hoffentlich doch noch nicht.

          Liebe Grüße,

          Felix Riesterer.

          --
          ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
      2. Lieber Sven Rautenberg,

        Wie kriegst du in der Session mit, dass die Blockade wieder aufzuheben ist?

        in meiner Session werden zwei Zufallswerte gespeichert, die wie Schlüssel und Schloss wirken. Sind die beiden erfolgreich benutzt worden, werden sie durch neue Zufallswerte ersetzt. Damit sendet das erneute Absenden jetzt "falsche" (also nicht mehr gültige) Werte und scheitert, was in einer erneuten Vorschau mündet.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. Moin!

    habe ein Mailformular auf meiner Seite, um die Seite zu empfehlen.

    Nach Absenden der Mail erscheint das Formular wieder mit geleertem Mail-Feld, damit man weitere Freunde anschreiben kann.

    Nun ist es bei Opera so, dass beim Aktualisieren der Seite (Schaltfläche) die E-Mail erneut verschickt wird. Wie kann ich das verhindern? Ich möchte die Mails nicht speichern und abgleichen.

    Das ist nicht nur bei Opera so, sondern in jedem Browser.

    Wenn nach dem Absenden des Formulars, welches die Methode POST nutzt, sofort wieder die gleiche (oder meinetwegen auch eine andere) Seite angezeigt wird, und man im Browser "Reload" ausführt, bedeutet das: Wiederhole den eben gemachten Request.

    Und das bedeutet: Führe den POST-Request nochmal aus. Die Browser fragen bei POST in der Regel nochmal nach, ob der User das wirklich will - die Frage kann man aber auch abschalten.

    Die Lösung ist eigentlich relativ einfach, und weil sie eigentlich überall angewandt wird, hat sie sogar einen eigenen Namen bekommen: "Post-Redirect-Get" - und das erklärt auch genau, was man tun muss: Das Ergebnis des POST-Requests darf keine neue, fertige Seite sein, sondern ist ein Redirect-Request, meinetwegen auch auf dieselbe URL, aber mit GET ausgeführt. Einen GET-Request darf man beliebig häufig wiederholen - er soll dabei nichts relevantes verändern (wenn man es trotzdem so programmiert, ist man selbst Schuld), insbesondere auch keine Mails versenden.

    - Sven Rautenberg

  3. Om nah hoo pez nyeetz, Gast!

    habe ein Mailformular auf meiner Seite, um die Seite zu empfehlen.

    Ich will ja nicht unverschämt klingen, aber ein solches Mailformular wäre für mich ein Grund, die Seite _nicht_ zu empfehlen.

    Hast du Messwerte, wieviele Empfehlungsmails abgesendet wurden?

    Die Empfänger bekommen ggf. unerwünschte Mails (und zwar von dir!). Dafür gab es auch schon Abmahnungen.

    Matthias

    --
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Auto und Automat.

    1. Dafür gab es auch schon Abmahnungen.

      Der bekannteste dieser, Abmahnungen versendende "Empfänger" liegt 6 Fuß tiefer.

      Seinem Kanzleikollege, dessen Gehilfin und gleich zweien der Gehilfen des tiefer liegenden hat dann das LG Osnabrück rechtskräftig heimgeleuchtet.

      Allerdings könnt es dennoch Nachahmer (Ich kenne da einen "Rechtsanwalt" in Krefeld... ) geben und auch die werden - genau wie Gravenreuth & Co. - "Richter" finden, welche dem insoweit idiotischen Rechtsverständnis ("und zwar von dir!") folgen.In einem Punkt hat Matthias unbedingt Recht:

      Ich will ja nicht unverschämt klingen, aber ein solches Mailformular wäre für mich ein Grund, die Seite _nicht_ zu empfehlen.

      Das unterschreibe ich mit.

      Jörg Reinholz

      1. Om nah hoo pez nyeetz, Jörg Reinholz!

        Allerdings könnt es dennoch Nachahmer ... geben und auch die werden ... "Richter" finden, welche dem insoweit idiotischen Rechtsverständnis ("und zwar von dir!") folgen.

        So idiotisch finde ich dieses Rechtsverständnis gar nicht. Wer, wenn nicht der Betreiber eines Services selbst, könnte etwas gegen die illegale/unerlaubte/unerwünschte Nutzung seines Dienstes unternehmen?

        Matthias

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Hans und Hansestadt.

        1. Om nah hoo pez nyeetz, Jörg Reinholz!

          So idiotisch finde ich dieses Rechtsverständnis gar nicht. Wer, wenn nicht der Betreiber eines Services selbst, könnte etwas gegen die illegale/unerlaubte/unerwünschte Nutzung seines Dienstes unternehmen?

          Man kann es so sehen, dass dieser (Du schreibst selbst: "Betreiber eines Services") nur die Infrastruktur stellt. Den wissentlichen und willentlichen Versand der Nachricht bewirkt dann ausschließlich der Benutzer. Dann würde man die Kirche im Dorf lassen. Es gibt bei der Abwägung durchaus ein paar Punkte zu beachten, z.B. die Menge des Payloads, also was der Betreiber selbst an Werbung an die Mail anhängt, ob es eine einfache Sperrmöglichkeit für die belästigten Empfänger gibt, etc. pp.

          ABER:

          Ich sehe durchaus den Fakt, dass unser Gast aus Unwissenheit eine Infrastruktur bereit stellt, die "per se" zum Spammen und Stalken geeignet ist. Die Frage ist, wie viele der Nutzungen seit der Inbetriebnahme Missbrauch wie Pillen- Virenscanner- oder Versicherungswerbung, Ankündigungen von großen Erbschaften oder Werbung für die vermeintlich lukrative Beteiligung am Verschieben der Vermögen irgend welcher abgesetzter afrikanischer Ersatzhitler oder Belästigungen ehemaliger Partner waren und wie er solche missbräuchlichen Nutzungen in Zukunft verhindern will. Immerhin schadet er ja auch sich selbst (und eventuell den Mitmietern auf einem shared host, also auch seinen Hoster) weil sein Host in den einschlägigen Listen landet und er dann womöglich nicht mal mehr an sich selbst Mails schicken kann (Kontaktformular etc.). Sein Hoster kann, soll und wird ihn feuern, wenn derlei passiert.

          Und weil es genau diese Mechanismen gibt frage ich mich, was da eigentlich die von verschiedenen Gerichten herbeigefaselte Mitstörerhaftung da noch soll und vor allem, wie diese Richter teilweise annehmen können, es gehe um Streitwerte von 15.000 Euro. Den Richter halte ich "idiotisches Verhalten im Amt" vor.

          Jörg Reinholz

          1. Lieber Jörg Reinholz,

            Ich sehe durchaus den Fakt, dass unser Gast aus Unwissenheit eine Infrastruktur bereit stellt, die "per se" zum Spammen und Stalken geeignet ist.

            da ich das Mailformular noch nicht gesehen habe, erlaube ich mir nur, allgemeine Bedenken zu äußern. Ja, wenn das Formular sowohl den Empfänger, als auch die an ihn zu versendende Nachricht in Teilen frei gestaltbar macht, dann ist das eine Spam-Schleuder. Diese kann man zwar durch entsprechende technische Hürden dahingehend einschränken, dass man einigermaßen sicher sein kann, dass die jeweiligen Absender tatsächlich Menschen und keine Bots sind, jedoch ist Spam dadurch nach wie vor möglich.

            Daher folgende Empfehlungen meinerseits:

            1.) entweder Empfänger oder Nachricht fest im Programm vorgeben, ohne dass ein Besucher diese sieht oder etwas daran ändern könnte

            2.) technische Barrieren gegen Bots (ich lehne Captchas zu diesem Zweck ab, siehe Archiv).

            Für den Op könnte ich mir vorstellen, dass man den Nachrichtentext betreffend ein paar Optionen anbietet, aus denen der Besucher wählen kann, ob sie im Mailtext enthalten sein sollen. Etwa in dieser Art:

            [___________________] Mailadresse des Empfängers
             X  über Veranstaltung informieren
            [ ] Veranstaltung empfehlen
            [ ] zur Veranstaltung einladen
            [ ] Frage nach Teilnahme
            [ ] Bitte um Meinungsfeedback bezüglich der Veranstaltung

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Ich sehe durchaus den Fakt, dass unser Gast aus Unwissenheit eine Infrastruktur bereit stellt, die "per se" zum Spammen und Stalken geeignet ist.

              Das Programm sendet eine Kopie an meine Mailadresse. Ich würde es also merken.

              Diese kann man zwar durch entsprechende technische Hürden dahingehend einschränken, dass man einigermaßen sicher sein kann, dass die jeweiligen Absender tatsächlich Menschen und keine Bots sind, jedoch ist Spam dadurch nach wie vor möglich.

              Es ist jedesmal eine andere Rechenaufgabe zu lösen. Ja, man könnte das Formular mit immer derselben Rechenaufgabe nachbauen und nur die Empfänger-Mail austauschen.

              Hatte das Frmular früher schon mal drin und es wurden unverständliche Texte und Links versendet. Jetzt werden Links "entschärft" und nochmal angezeigt vor dem Versenden. Ich denke, das macht Spammern keinen Spaß.

              Gast

              1. Das Programm sendet eine Kopie an meine Mailadresse. Ich würde es also merken.

                Ups. Du wirst vermutlich nicht wollen, dass der für Dein Bundesland (D,A) oder Kanton (CH) zuständige Datenschutzbeauftragte (oder wie immer man das Amt lokal nennt) davon Kenntnis nimmt.

                Der wird in dem Fall nämlich ein deftiges Bußgeld verlangen.

                Jörg Reinholz

              2. Hallo,

                Das Programm sendet eine Kopie an meine Mailadresse. Ich würde es also merken.

                das halte wiederum ich als datenschutzrechtlich bedenklich, wird man denn wenigstens informiert, dass du ne Kopie erhälst? Also nicht, dass diese Informationen das Vorgehen besser machen würden

                martachen

              3. Om nah hoo pez nyeetz, Gast!

                Das Programm sendet eine Kopie an meine Mailadresse. Ich würde es also merken.

                Ersetze "Kopie" durch "Info".

                Matthias

                --
                Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Dach und Dachs.

    2. Hallo Matthias,

      Ich will ja nicht unverschämt klingen, aber ein solches Mailformular wäre für mich ein Grund, die Seite _nicht_ zu empfehlen.

      Es geht um Veranstaltungen, da fragt man schon mal Freunde, ob sie mitkommen.

      Hast du Messwerte, wieviele Empfehlungsmails abgesendet wurden?

      Habe das gestern aktiviert. Drei.

      Gast

      1. Hallo,

        Ich will ja nicht unverschämt klingen, aber ein solches Mailformular wäre für mich ein Grund, die Seite _nicht_ zu empfehlen.
        Es geht um Veranstaltungen, da fragt man schon mal Freunde, ob sie mitkommen.

        ja, dagegen ist auch nichts einzuwenden. Aber dann switche ich zu meinem Mailclient und schreibe selber eine kurze Nachricht. Erstens hab ich dann eine Kopie im Postausgang; zweitens weiß ich, *wie* die Nachricht versendet wird; und drittens weiß ich, dass die Nachricht bei meinen Freunden nicht im SPAM-Filter landet, weil nämlich *mein* Name als Absender drinsteht und nicht irgendwas Unbekanntes.

        Andere greifen stattdessen spontan zum Telefon.

        Hast du Messwerte, wieviele Empfehlungsmails abgesendet wurden?
        Habe das gestern aktiviert. Drei.

        Hm. Dein Fanclub? ;-)

        Ciao,
         Martin

        --
        Lieber blau machen, als sich schwarz ärgern.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Hallo,

          Es geht um Veranstaltungen, da fragt man schon mal Freunde, ob sie mitkommen.

          Linksharing bei FB oder ähnliches als Alternative?

          Viele Grüße
          Siri

          1. Hi,

            Es geht um Veranstaltungen, da fragt man schon mal Freunde, ob sie mitkommen.
            Linksharing bei FB oder ähnliches als Alternative?

            gern, aber ohne mich. :-)

            Ciao,
             Martin

            --
            F: Was sagt der große Keks zum kleinen Keks?
            A: Du kannst dich jetzt verkrümeln.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(