Ergebnis 1 bis 7 von 7

Thema: Formular nur einmal senden

  1. #1
    Contao-Fan Avatar von Hoch-3
    Registriert seit
    16.11.2010.
    Ort
    Zürich
    Beiträge
    373
    Partner-ID
    7136

    Standard Formular nur einmal senden

    Für eine Umfrage hab ich ein Formular erstellt. Mit Seitenwechseln und Eintrag ins Leads. Funktioniert soweit alles.

    Jetzt muss aber noch verhindert werden, dass jemand mit x-fachem Ausfüllen der Umfrage diese verfälschen kann.

    Welches ist die einfachste Möglichkeit, das mehrfache Ausfüllen zu erschweren? Ein Session-Cookie, welches den Absendebutton durch eine Nachricht (nur einmal bitte) ergänzt, denke ich. Nur. Wie erstelle ich das und wo genau? Ein erster Versuch ist grandios gescheitert und die stundenlange Suche im Netz hat nicht gefruchtet, leider.

    Danke für eine Lösung oder zumindest einen Hinweis mit dem ich mit meinen nicht so weitereichenden Programmierkenntnissen das hinkriegen kann.

  2. #2
    Contao-Nutzer
    Registriert seit
    08.11.2009.
    Beiträge
    191

    Standard

    Du könntest dir https://github.com/Tastaturberuf/con...content-bundle ansehen.

    Damit kannst du nach Absenden des Formulars statt einer Bestätigungsseite ein Inhaltselement anzeigen lassen. In den Einstellungen kannst du einstellen dass dieses Inhaltselement die komplette Session angezeigt wird. Somit wird das Formular auch nach Reload der Seite nicht angezeigt.

  3. #3
    Contao-Fan Avatar von Hoch-3
    Registriert seit
    16.11.2010.
    Ort
    Zürich
    Beiträge
    373
    Partner-ID
    7136

    Standard

    Herzlichen Dank. Aber das ist nicht die Idee.

    Nach dem Absenden des Formulars gelangt man auf eine Dankesseite. Wo dann ein weiteres Formular zur Newsletter-Bestellung liegt.

    Wenn nun aber jemand vom Bestell-Formular zurück zum Umfrage-Formular geht, soll er das nicht mehr absenden können. Auch mit anderen erfassten Daten nicht. Gibt es vielleicht eine Möglichkeit, via Session den Button mit einem Display: none zu belegen? Wenn ja, wie müsste man das schreiben? Und wo? Ins Template form_wrapper? Am Anfang? Am Ende?

  4. #4
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.450
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hmm, denke konzeptionell ist das nicht der richtige Weg, weil Cookies o.ä. ja irgendwann ungültig werden.

    Vielleicht ist es besser einfacher z.B. die E-Mail Adresse ins Formular zu integrieren und daran festzumachen, ob die erneute Ausfüllung zu werten ist.

  5. #5
    Contao-Fan Avatar von Hoch-3
    Registriert seit
    16.11.2010.
    Ort
    Zürich
    Beiträge
    373
    Partner-ID
    7136

    Standard

    Zitat Zitat von cliffparnitzky Beitrag anzeigen
    Hmm, denke konzeptionell ist das nicht der richtige Weg, weil Cookies o.ä. ja irgendwann ungültig werden.

    Vielleicht ist es besser einfacher z.B. die E-Mail Adresse ins Formular zu integrieren und daran festzumachen, ob die erneute Ausfüllung zu werten ist.
    Danke schon mal.

    Nun, die Mailadresse ist integriert. Aber man kann ja auch mit Fake-Mailadressen arbeiten. Allenfalls wird das dann bei der Auswertung bemerkt, aber der Aufwand wäre dann hier allenfalls immens. Das Excel aus dem leads kann man ja dann nach E-Mail sortieren und so mal die doppelten rausfischen. Ungültige Adressen müsste man allenfalls aus den unzustellbaren Bestätigungsmails rauskopieren.

    Ein Cookie, das für eine Weile das erneute Absenden des Formulars verhindert, wäre auf die Schnelle hier die einfachere Lösung. Meine Idee war,

    <div class="absenden"> um den Sendbutton mit display: block
    <div class="abgesendet"> um einen Text à la "schon geschickt" mit display: none

    Und das Session Cookie steuert das display der beiden Klassen.

    Aber eben, die genaue Platzierung und Notierung dazu finde ich nirgends. Dummerweise müsste es heute noch online gehen, ist jetzt aber vom Kunden auf morgen verschoben worden. Alles andere funktioniert einwandfrei.

  6. #6
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.714
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Hoch-3 Beitrag anzeigen
    Nun, die Mailadresse ist integriert. Aber man kann ja auch mit Fake-Mailadressen arbeiten.
    es gibt eine Erweiterung für Leads, die ein DOI in die Sache einbaut - das verhindert zwar nicht das Absenden mit mehreren E-Mail-Adressen, aber die Fake-Sachen sind schonmal raus

    in das E-Mailfeld könntest Du eine eigene Validierung einbauen, die die Adresse in Leads abprüft - dann wird dem User ausgegeben "Sie hatten schon..."

  7. #7
    Contao-Fan Avatar von Hoch-3
    Registriert seit
    16.11.2010.
    Ort
    Zürich
    Beiträge
    373
    Partner-ID
    7136

    Standard

    Gelöst hab ichs nun wie folgt:

    Für die Landingpage hab ich ein eigenes Template erstellt und da vor dem <html> das cookie eröffnet:

    <?php
    setcookie("name","abgeschickt",time()+(3600));
    ?>

    Für das Formular habe ich das form_wrapper kopiert mit dem zusätzlichen Code:

    <?php
    $cookie = "";
    $cookie = $_COOKIE["name"];
    if ($cookie != "abgeschickt") { ?>


    ... Original-Formular-Code ...

    <?php
    }
    ?>
    <!-- indexer::continue -->


    Und mit einer extra .php Datei in den Templates, das ich vor dem Formularelement im Artikel eingefügt habe folgendes:

    <?php
    $cookie = "";
    $cookie = $_COOKIE["name"];
    if ($cookie == "abgeschickt") {


    echo "Meldung dass schon abgeschickt";

    }
    ?>

    Etwas zusammengebastelt halt... nach langem Suchen dann doch noch gefunden. Und es funktioniert. Das Formular mit der Umfrage kann erst nach einer Stunde ein weiteres mal ausgefüllt und abgeschickt werden.

    Falls es wer brauchen kann... :-)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •