Ergebnis 1 bis 15 von 15

Thema: Eigenes Script: Das Request-Token konnte nicht validiert werden.

  1. #1
    Contao-Nutzer Avatar von liebling65
    Registriert seit
    23.01.2011.
    Ort
    Regensburg
    Beiträge
    214

    Standard Eigenes Script: Das Request-Token konnte nicht validiert werden.

    Ich muss das Thema kurz aufgreifen: ich includiere ne php-Datei, einen Tarifrechner, der das Ergebnis wieder in die Seite schreibt.
    Die dazugehörige tmp-Datei wird erzeugt, das csrf_https-contao_csrf_token wird jedenfalls gesetzt und übertragen.

    _________________________________________
    Fehler:
    Was ist das Problem?
    Das Request-Token konnte nicht validiert werden.

    Wie kann ich das Problem lösen?
    Bitte klicken Sie hier und versuchen Sie es erneut. Verwenden Sie nicht die Zurück-Schaltfläche Ihres Browsers.

    Weitere Informationen
    Der Fehler tritt bei einer POST-Anfrage ohne gültiges Request-Token auf. In Contao 2.10 wurde die Referer-Prüfung durch ein Request-Token-System ersetzt. Wenn das Problem anhält, verwenden Sie eventuell eine inkompatible Drittanbieter-Erweiterung oder haben Ihre Contao-Installation nicht vollständig aktualisiert.
    _________________________________________

    Ich habe eine aktuelle Contao 5.3, die Seite läuft schon unter Contao 4.4, da funktioniert alles, jetzt hab ich auf einem neuen Webspace die Seite neu angelegt und die Inhalte händisch übertragen. Nur Text und Bilder wurden kopiert.

    Wo kann ich da noch kucken? Im Contao Log steht nichts.

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.646
    Partner-ID
    10107

    Standard

    Moderation: Beitrag in einen eigenen Thread verschoben, da es nichts mit dem ursprünglichen Thema zu tun hat.
    » sponsor me via GitHub or Revolut

  3. #3
    Contao-Nutzer Avatar von liebling65
    Registriert seit
    23.01.2011.
    Ort
    Regensburg
    Beiträge
    214

    Standard

    Sorry Spooky

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.646
    Partner-ID
    10107

    Standard

    Poste einen Link zur Seite und das PHP Script um dein Problem und Aufgabenstellung besser verstehen zu können.
    » sponsor me via GitHub or Revolut

  5. #5
    Contao-Nutzer Avatar von liebling65
    Registriert seit
    23.01.2011.
    Ort
    Regensburg
    Beiträge
    214

    Standard

    Funktioniert unter: https://stadtwerke-hemau.de/strom.html#tarifrechner
    Funktioniert nicht mehr unter: https://update.stadtwerke-hemau.de/strom#tarifrechner
    PHP 8.4 auf der neuen Seite

    Code:

    PHP-Code:
    <?php

    if ($_POST['action'] == "go"){

       
    $verbrauch str_replace(",",".",$_POST['verbrauch']);

       
    $ergebnis1 = ($verbrauch 0.34) + 156.00;
       
    $ergebnis1b number_format($ergebnis12',' ,'.');

       
    $ergebnis2 = (($verbrauch 0.55) * 0.37) + (($verbrauch 0.45) * 0.30) + 192.00;
       
    $ergebnis2b number_format($ergebnis22',' ,'.');

         if (
    $_POST['verbrauch'] != ""){
            
    $meldung  '<p class="bordertop"><strong>Berechnungsergebnis / Ihr Strompreis:</strong></p>';
            
    $meldung .= '<table width="100" border="0" cellspacing="0" cellpadding="0">';
            
    $meldung .= '<tr><td nowrap="nowrap">Normaltarif:</td>';
            
    $meldung .= '<td nowrap="nowrap" align="right">'.$ergebnis1b.' &euro; / Jahr</td></tr>';
            
    $meldung .= '<tr><td nowrap="nowrap">Doppeltarif bei 45% Schwachlastanteil: &nbsp;&nbsp;&nbsp;</td>';
            
    $meldung .= '<td nowrap="nowrap" align="right">'.$ergebnis2b.' &euro; / Jahr</td></tr></table>';
            
    $meldung .= '<p>Die errechneten Preise beinhalten die Konzessionsabgabe, Grund-/Verrechnungsgeb&uuml;hr,';
            
    $meldung .= 'Stromsteuer und <br>gesetzliche Mehrwertsteuer. Rundungsdifferenzen zu den tats&auml;chlichen Endabrechnungen sind m&ouml;glich.</p>';
         } else {
            
    $meldung '<p><strong><br />Bitte geben Sie bei "Jahresstromverbrauch" eine Zahl ein.</strong></p>';
         }
    } else {

       
    $meldung "<p>&nbsp;</p>";
    }
    $verbrauch str_replace(".",",",$verbrauch);

    echo 
    '<form name="formular" id="formular" method="post" action="strom#formular">'."\n";
    echo 
    '<input type="text" name="verbrauch" size="15" value="'.$verbrauch.'" style="width:100px; height:20px;" />';
    echo 
    '&nbsp; [kWh]&nbsp; ';
    echo 
    '<input type="hidden" name="action" value="go" />';
    echo 
    '<br>'."\n";
    echo 
    '<br>'."\n";
    echo 
    '<input type="submit" value="Berechnen" id="ctrl_64" class="submit" style="width:10%;" />'."\n";
    echo 
    '</form>'."\n";

    echo 
    '<p>'.$meldung.'</p>'."\n";

    ?>
    Geändert von Spooky (17.10.2025 um 08:52 Uhr)

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.646
    Partner-ID
    10107

    Standard

    PHP Code immer mit [php] Tags posten.
    » sponsor me via GitHub or Revolut

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.646
    Partner-ID
    10107

    Standard

    Folgende Probleme bzw. Verbesserungspotentiale hast du:

    • Die Seite https://update.stadtwerke-hemau.de/strom setzt sofort ein Session Cookie
      Code:
      $ curl -I https://update.stadtwerke-hemau.de/strom
      HTTP/1.1 200 OK
      …
      Contao-Cache: miss
      Set-Cookie: PHPSESSID=…; path=/; secure; httponly; samesite=lax
      Set-Cookie: csrf_https-contao_csrf_token=…-TtUKZIBzSTjR579ZGbwoE; path=/; secure; httponly; samesite=lax
      Dadurch benötigt das Formular des Tarifrechners auch sofort ein CSRF Token. Hier solltest du analysieren, welche Komponente deiner Contao Installation etwas in die Session schreibt und wozu.
    • Deinen Tarifrechner solltest du lieber als echtes Inhaltselement umsetzen. Notfalls vielleicht noch als HTML5 Template für das Template Inhaltselement (bspw. ce_template_tarifrechner.html5).
    • Das Formular deines Tarifrechners übermittelt aktuell kein CSRF Token, deswegen kommt es zu diesem Fehler (bzw. kann es zu diesem Fehler kommen, sobald du den ersten Punkt behoben hast).
    » sponsor me via GitHub or Revolut

  8. #8
    Contao-Nutzer Avatar von liebling65
    Registriert seit
    23.01.2011.
    Ort
    Regensburg
    Beiträge
    214

    Standard

    Ich habs mal als Inhaltselement gesetzt: Template ce_html.html5 kopiert, umbenannt in ce_html_tarifrechner.html5 und den Tarifrechner-PHP-Code reinkopiert, als Inhaltselement HTML ausgewählt und mit dem Template verknüpft.
    Fehler bleibt. Beim Token bin ich raus - wie schaffe ich es, dass er gesetzt wird? Schon sehr speziell...

    und geschafft (Token im Formular gesetzt):

    PHP-Code:
    <?php

    if ($_POST['action'] == "go"){

       
    $verbrauch str_replace(",",".",$_POST['verbrauch']);

       
    $ergebnis1 = ($verbrauch 0.34) + 156.00;
       
    $ergebnis1b number_format($ergebnis12',' ,'.');

       
    $ergebnis2 = (($verbrauch 0.55) * 0.37) + (($verbrauch 0.45) * 0.30) + 192.00;
       
    $ergebnis2b number_format($ergebnis22',' ,'.');

         if (
    $_POST['verbrauch'] != ""){
            
    $meldung  '<p class="bordertop"><strong>Berechnungsergebnis / Ihr Strompreis:</strong></p>';
            
    $meldung .= '<table width="100" border="0" cellspacing="0" cellpadding="0">';
            
    $meldung .= '<tr><td nowrap="nowrap">Normaltarif:</td>';
            
    $meldung .= '<td nowrap="nowrap" align="right">'.$ergebnis1b.' &euro; / Jahr</td></tr>';
            
    $meldung .= '<tr><td nowrap="nowrap">Doppeltarif bei 45% Schwachlastanteil: &nbsp;&nbsp;&nbsp;</td>';
            
    $meldung .= '<td nowrap="nowrap" align="right">'.$ergebnis2b.' &euro; / Jahr</td></tr></table>';
            
    $meldung .= '<p>Die errechneten Preise beinhalten die Konzessionsabgabe, Grund-/Verrechnungsgeb&uuml;hr,';
            
    $meldung .= 'Stromsteuer und <br>gesetzliche Mehrwertsteuer. Rundungsdifferenzen zu den tats&auml;chlichen Endabrechnungen sind m&ouml;glich.</p>';
         } else {
            
    $meldung '<p><strong><br />Bitte geben Sie bei "Jahresstromverbrauch" eine Zahl ein.</strong></p>';
         }
    } else {

       
    $meldung "<p>&nbsp;</p>";
    }
    $verbrauch str_replace(".",",",$verbrauch);

    echo 
    '<form name="formular" id="formular" method="post" action="strom#formular">'."\n";
    echo 
    '<input type="text" name="verbrauch" size="15" value="'.$verbrauch.'" style="width:100px; height:20px;" />';
    echo 
    '&nbsp; [kWh]&nbsp; ';
    echo 
    '<input type="hidden" name="REQUEST_TOKEN" value="'.$this->requestToken.'">';
    echo 
    '<input type="hidden" name="action" value="go" />';
    echo 
    '<br>'."\n";
    echo 
    '<br>'."\n";
    echo 
    '<input type="submit" value="Berechnen" id="ctrl_64" class="submit" style="width:10%;" />'."\n";
    echo 
    '</form>'."\n";

    echo 
    '<p>'.$meldung.'</p>'."\n";

    ?>
    Vielen Dank Spooky
    Geändert von liebling65 (17.10.2025 um 09:47 Uhr)

  9. #9
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    3.052

    Standard

    Ganz andere Frage (die das Thema Token nebenbei lösen würde): wozu brauchst Du überhaupt ein Form-Submit?

    Das


    PHP-Code:
       $ergebnis1 = ($verbrauch 0.34) + 156.00;
       
    $ergebnis1b number_format($ergebnis12',' ,'.');

       
    $ergebnis2 = (($verbrauch 0.55) * 0.37) + (($verbrauch 0.45) * 0.30) + 192.00;
       
    $ergebnis2b number_format($ergebnis22',' ,'.'); 
    sollte JavaScript doch auch berechnen und als Ergebnis einblenden können.

    Wenn ich nichts übersehen habe: mehr passiert doch auf der Seite nicht, oder?
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  10. #10
    Contao-Nutzer Avatar von liebling65
    Registriert seit
    23.01.2011.
    Ort
    Regensburg
    Beiträge
    214

    Standard

    Da magst du recht haben, aber der große Scripter vor dem Herrn bin ich nicht. Dieses PHP-Snippet hab ich übernommen und eingebunden.

    Vielleicht probier ich das mal - wenn ich viel Zeit hab (dauert also noch).

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.646
    Partner-ID
    10107

    Standard

    Zitat Zitat von liebling65 Beitrag anzeigen
    Beim Token bin ich raus - wie schaffe ich es, dass er gesetzt wird? Schon sehr speziell...
    Wie meinst du speziell? POST Requests im Contao Frontend Scope brauchen immer einen CSRF Token, sobald ein Cookie (wie zB das Session Cookie) da ist. Das war auch in Contao 3 und 4 so.
    » sponsor me via GitHub or Revolut

  12. #12
    Contao-Nutzer Avatar von liebling65
    Registriert seit
    23.01.2011.
    Ort
    Regensburg
    Beiträge
    214

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Ganz andere Frage (die das Thema Token nebenbei lösen würde): wozu brauchst Du überhaupt ein Form-Submit?

    Das


    PHP-Code:
       $ergebnis1 = ($verbrauch 0.34) + 156.00;
       
    $ergebnis1b number_format($ergebnis12',' ,'.');

       
    $ergebnis2 = (($verbrauch 0.55) * 0.37) + (($verbrauch 0.45) * 0.30) + 192.00;
       
    $ergebnis2b number_format($ergebnis22',' ,'.'); 
    sollte JavaScript doch auch berechnen und als Ergebnis einblenden können.

    Wenn ich nichts übersehen habe: mehr passiert doch auf der Seite nicht, oder?
    Tatsächlich schnell in ChatGPT eingegeben und umwandeln lassen - geht. Gute Idee.

  13. #13
    Contao-Nutzer Avatar von liebling65
    Registriert seit
    23.01.2011.
    Ort
    Regensburg
    Beiträge
    214

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wie meinst du speziell? POST Requests im Contao Frontend Scope brauchen immer einen CSRF Token, sobald ein Cookie (wie zB das Session Cookie) da ist. Das war auch in Contao 3 und 4 so.
    Ja, aber damit hab ich mich tatsächlich nie beschäftigt.

  14. #14
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.646
    Partner-ID
    10107

    Standard

    Zitat Zitat von liebling65 Beitrag anzeigen
    Ja, aber damit hab ich mich tatsächlich nie beschäftigt.
    Musst du aber, wenn du eigens programmierte POST Formulare in Contao einsetzen willst

    Den ersten Punkt hier solltest du auch noch prüfen, unabhängig vom Tarifrechner.
    » sponsor me via GitHub or Revolut

  15. #15
    Contao-Nutzer
    Registriert seit
    20.06.2009.
    Beiträge
    44

    Standard

    vielleicht hilft dir meine Lösung etwas

    habe hier einen dynamischen Preisrechner integriert https://www.iaf-messe.com/de/preise

    Anbei die Include HTML5 Datei und das zugehörige js.
    Preisrechner.zip

    Gruß

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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