Ergebnis 1 bis 3 von 3

Thema: Newsletter Hook aus Formular -> Invalid request token!

  1. #1
    Contao-Nutzer Avatar von humandigital
    Registriert seit
    25.07.2011.
    Ort
    Einsiedeln SZ | Schweiz
    Beiträge
    28

    Standard Newsletter Hook aus Formular -> Invalid request token!

    Guten Tag allerseits
    Ich brauche zusatzinformationen zu einem Newsletter-Abonnementen und habe mich, nach dem Durforsten des Forums entschieden, es mit einem Hook auf einem Formular zu machen und habe mich an das vorgehen aus dem Thread <Newsletterversand aus Formular aktivieren> gehängt.

    Leider bekomme ich nach dem Absenden einen <Invalid request token!> zurück und habe keine Ahnung, wo da das Problem liegen könnte...

    Hier, was ich gemacht habe:
    - In /system/modules einen neuen Ordner angelegt
    -> darin config/config.php und NewsletterFinnova.php erstellt.

    Hier die Files die ich erstellt habe:
    PHP-Code:
    //    system/modules/newsletter_finnova/config/config.php
    if (!defined('TL_ROOT')) die('You can not access this file directly!');
        
    $GLOBALS['TL_HOOKS']['processFormData'][] = array('NewsletterFinnova''processFormData'); 
    PHP-Code:
    //    system/modules/newsletter_finnova/NewsletterFinnova.php
    class NewsletterFinnova extends Frontend
    {
        public function 
    processFormData($arrPost$arrForm$arrFiles)
        {
            if(
    $arrForm['id'] == 1) {
                
    $subscribe false;

                if(
    $arrPost['newsletter'] == "ja") {
                
    /*ECHO*/    print_r($arrPost);
                    
    $subscribe true;
                    
    $PostData = array('email'=>$arrPost['email'], 'FORM_SUBMIT'=>'tl_subscribe','channels[]'=>'1');
                    
    $ch curl_init("http://{$_SERVER['HTTP_HOST']}/newsletter-anmelden-formular.html");
                }
            }

            
    //subscribe?
            
    if($subscribe) {
                
    $Post http_build_query($PostData);
                
    curl_setopt ($chCURLOPT_HEADER);
                
    curl_setopt ($chCURLOPT_REFERER"http://{$_SERVER['HTTP_HOST']}/newsletter-anmelden-ok.html");
                
    curl_setopt ($chCURLOPT_POSTFIELDS$Post);
                
    curl_setopt ($ch,CURLOPT_POST,TRUE);
                
    curl_setopt ($ch,CURLOPT_HTTPGET,FALSE);
                
    $data curl_exec$ch );
                
    curl_close ($ch);
            }

        }

    Hier die Testumgebung:
    http://contao.humandigital.ch/newsletter-anmelden.html
    -> Formular mit Hiddenfield name="newsletter" value="ja"
    ... Inhalt des Formular wird per E-Mail versendet
    ... Eintrag zu den Abonnementen wird nicht ausgeführt :-(
    ... Fehlerseite <Invalid request token!> wird angezeigt :-(

    http://contao.humandigital.ch/newsle...-formular.html
    -> Anmeldeformular für Newsletter
    ... Funktioniert korrekt, erzeugt Bestätigungsmail, eintrag in die Abonnenten-Liste und leitet auf die OK-Seite weiter

    http://contao.humandigital.ch/newsle...melden-ok.html
    -> OK-Seite mit Hinweis auf das Bestätigungsmail


    Die Einzelteile funktionieren wie gewünscht, am Zusammenspiel happert es leider noch :-(
    Über Hinweise bin ich sehr dankbar :-)

    Morgengruss
    Christoph

  2. #2
    Contao-Nutzer Avatar von humandigital
    Registriert seit
    25.07.2011.
    Ort
    Einsiedeln SZ | Schweiz
    Beiträge
    28

    Standard Scheint ein Problem mit der Übergabe des REQUEST_TOKEN zu sein

    Hier mal ein erster Schritt in Richtung der Lösung...

    Bei weiterem Recherchieren im Forum bin ich dann zu einem etwas klareren Verständnis über die Request-Tocken gelangt.
    Mein Hook funktioniert eigentlich wie gewünscht, bis auf den Request-Token "natürlich"...

    Wenn ich in Backend-Einstellungen das "Anfrage-Tokens deaktivieren" setze, funktioniert es.

    Status Quo:
    Wenn ich mein Formular absende wird folgendes weiter gegeben
    PHP-Code:
    [vorname] => Hans
    [nachname] => Muster
    [firma] => Firma GmbH
    [funktion_position] => CEO
    [email] => name@domain.ch
    [newsletter] => ja
    [FORM_SUBMIT] => auto_form_1
    [REQUEST_TOKEN] => d152c52d6cde5447408800779a08f0b0
    [MAX_FILE_SIZE] => 2048000 
    Nun, so vermute ich, ist der REQUEST_TOKEN für das "erste" Formular und da ich per Hook ja noch ein zweites, das Newsletter-Anmelden Formular aufrufe, bekommt der dann den, durch das erste Formular "verbrauchte" Request-Token.

    Hiermit die Frage:
    Weiss jemand, wie ich dem Hook ein neuen Request-Token für das zweite Formular mitgeben kann?

    Vielen Dank für die Unterstützung
    Christoph

  3. #3
    Contao-Nutzer Avatar von humandigital
    Registriert seit
    25.07.2011.
    Ort
    Einsiedeln SZ | Schweiz
    Beiträge
    28

    Standard Request-Token übergeben

    2ter Schritt in die Irre?

    Als Veruch gebe ich jetzt em cURL auch einen Token mit:
    PHP-Code:
    $PostData = array('email'=>$arrPost['email'], 'FORM_SUBMIT'=>'tl_subscribe','channels[]'=>'1''REQUEST_TOKEN'=>REQUEST_TOKEN); 
    Der wird auch erstellt, jedoch bringt's das noch nicht...
    PHP-Code:
    [email] => name@domain.ch
    [FORM_SUBMIT] => tl_subscribe
    [channels[]] => 1
    [REQUEST_TOKEN] => 4414f8c8fe2e289713f3eb6ba5432e5e 
    Eigentlich müssten doch alle, die die selbe Lösung wie ich, noch vor der Umstellung zu den Request-Token, verbaut haben, das gleiche Problem wie ich habe...
    Die einzige Lösung, auf die ich mit meiner bescheidenen Contao-Erfahrung gekommen bin, ist die des "Anfrage-Tokens deaktivieren"...
    ... was ich als eine stümperhafte Lösung erachte :-/

    Werde das mal so einbauen, aber bin noch immer an einer "sauberen" Lösung interessiert.
    Herzlichen Dank für Inputs :-)

    Christoph

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
  •