Ergebnis 1 bis 18 von 18

Thema: Vergleich von Referer und Request mit strpos immer "false"

  1. #1
    Contao-Nutzer
    Registriert seit
    25.08.2011.
    Beiträge
    59

    Standard Vergleich von Referer und Request mit strpos immer "false"

    Moin, moin,
    in einem Modul muß ich den Referer- mit dem Request-String vergleichen. Dessen Werte sind z.B.:

    Referer: contao/main.php?do=sitzungen&table=tl_km_sitzungen&id=19
    Request: contao/main.php?do=sitzungen&table=tl_km_sitzungen&id=19& upload=127

    Egal was ich anstelle, bei

    strpos($this->replaceInsertTags('{{env::request}}'),$this->getReferer()) bzw.

    $text = $this->replaceInsertTags('{{env::request}}');
    $such = $this->getReferer();
    strpos($text, $such) erhalte ich "FALSE"!

    Allerdings
    strpos('contao/main.php?do=sitzungen&table=tl_km_sitzungen&id=19& upload=127','contao/main.php?do=sitzungen&table=tl_km_sitzungen&id=19' ) und auch
    strpos('contao/main.php?do=sitzungen&table=tl_km_sitzungen&id=19& upload=127',$this->getReferer()) ergeben natürlich "0"!!

    Erst bei der Verwendung vom Request geht was schief! Woran könnte dies liegen?

    Danke und Gruß
    bees2
    Geändert von bees2 (28.01.2015 um 12:41 Uhr)

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

    Standard

    Hallo,

    hast du das inzwischen geloest? Wenn ja, wie? Stehen vor dem selben Problem....

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

    Standard

    Zeig mal deinen Code her.

  4. #4
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.081
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Also ich würde mir einfach mal beide Strings ausgeben lassen, dann sieht man schon wo es klemmt.

  5. #5
    Contao-Nutzer
    Registriert seit
    25.08.2011.
    Beiträge
    59

    Standard

    Hallo liebling65,
    wenn Du den Rat befolgst:
    Zitat Zitat von tab Beitrag anzeigen
    Also ich würde mir einfach mal beide Strings ausgeben lassen, dann sieht man schon wo es klemmt.
    wirst Du sehen, dass in einem der beiden das "&" als "&" und in dem anderen als "&" drin steht. Die Ausgabe nicht nur im Browser anschauen. Meistens haben die Maschinen recht!

    Gruß
    bees2

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

    Standard

    Hallo,

    wir haben in unseren Abfrage keine "&"-Zeichen drin. Wir haben das jetzt anders geloest.
    In Kurzfiorm: keine Inserttags mehr.

  7. #7
    Contao-Fan Avatar von Webstylerin
    Registriert seit
    24.08.2009.
    Ort
    Schlüsselfeld, Bayern
    Beiträge
    403
    Partner-ID
    6232
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich habe gerade genau das gleiche Problem. Ich kann mit dem Referer-Tag nichts machen.

    Probiert habe ich: strpos, explode, str_replace und einen direkten String-Vergleich mit "==". Nichts wirkt auf den Referer-Tag.

    Ich will prüfen, ob man von einer Unterseite von "Leistungen" kommt, das habe ich anfangs so probiert:
    Code:
      $myRef = $this->replaceInsertTags('{{env::referer}}');
      if (strpos($myRef,'leistungen')!==false): ?>
    Er trifft nie, selbst wenn ich $myRef direkt mit der Ausgabe von $myRef im Quelltext vergleiche geht es nicht. Es sind keinerlei Sonderzeichen drin. Typ der Variable ist string.

    str_replace ersetzt nichts, explode mit "/" oder z. B. "e" hat als Ergebnis nur den kompletten Text als einzigen Wert im Array. ???

    Wenn ich statt {{env::referer}} einfach {{link_url::1}} nehme geht alles. Ich bin verwirrt, aber zumindest nicht komplett verrückt wenn andere das Problem haben. Dann such ich mal nach ner anderen Lösung. :/

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

    Standard

    Mach einfach mal ein
    PHP-Code:
    <?php var_dump(\Environment::get('referer')); ?>
    Wenn in diesem string kein substring 'leistungen' vorkommt, dann stimmt etwas anderes nicht.

  9. #9
    Contao-Fan Avatar von Webstylerin
    Registriert seit
    24.08.2009.
    Ort
    Schlüsselfeld, Bayern
    Beiträge
    403
    Partner-ID
    6232
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Mach einfach mal ein
    PHP-Code:
    <?php var_dump(\Environment::get('referer')); ?>
    Wenn in diesem string kein substring 'leistungen' vorkommt, dann stimmt etwas anderes nicht.
    Hier kommt NULL raus, während das Referer-Insert-Tag mit der richtigen URL besetzt ist. Was heißt das jetzt für mich?

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

    Standard

    Ah, sorry, \Environment::get('referer') gibt es gar nicht. Welche Ausgabe erzeugt
    PHP-Code:
    var_dump$this->getReferer() );
    var_dumpstrpos$this->getReferer(), 'leistungen' ) ); 
    ? Bitte die Ausgabe auch posten.

  11. #11
    Contao-Fan Avatar von Webstylerin
    Registriert seit
    24.08.2009.
    Ort
    Schlüsselfeld, Bayern
    Beiträge
    403
    Partner-ID
    6232
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ah, sorry, \Environment::get('referer') gibt es gar nicht. Welche Ausgabe erzeugt
    PHP-Code:
    var_dump$this->getReferer() );
    var_dumpstrpos$this->getReferer(), 'leistungen' ) ); 
    ? Bitte die Ausgabe auch posten.
    var_dump( $this->getReferer() ); -> string(34) "de/leistungen/konferenzraeume.html"
    var_dump( strpos( $this->getReferer(), 'leistungen' ) ); -> int(3)

    Hier gibts zumindest ein Ergebnis.

    Ich habe mir gerade bees2s original Post angesehen und es selbst mal mit $this->getReferer(); probiert. Hiermit geht es. Spricht etwas dagegen einfach das zu benutzen?

    Ich kann nur nicht verstehen warum der Tag {{env::referer}} nicht geht, zumal er ja richtig anzeigt wird. Aber ich kann rein gar nichts mit dem String machen.

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

    Standard

    Dann poste mal die Ausgabe von
    PHP-Code:
    var_dump$this->getReferer() );
    var_dumpstrpos$this->getReferer(), 'leistungen' ) );
    var_dump$this->replaceInsertTags('{{env::referer}}') );
    var_dumpstrpos$this->replaceInsertTags('{{env::referer}}'), 'leistungen' ) ); 

  13. #13
    Contao-Fan Avatar von Webstylerin
    Registriert seit
    24.08.2009.
    Ort
    Schlüsselfeld, Bayern
    Beiträge
    403
    Partner-ID
    6232
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Dann poste mal die Ausgabe von
    PHP-Code:
    var_dump$this->getReferer() );
    //string(34) "de/leistungen/konferenzraeume.html"
    var_dumpstrpos$this->getReferer(), 'leistungen' ) );
    //int(3)
    var_dump$this->replaceInsertTags('{{env::referer}}') );
    //string(16) "de/leistungen/konferenzraeume.html"
    var_dumpstrpos$this->replaceInsertTags('{{env::referer}}'), 'leistungen' ) );
    //bool(false) 
    Habe die Ausgabe als Kommentare unter die entsprechenden Zeilen gesetzt. Warum sind die beiden Ausgaben unterschiedlich wenn sie augenscheinlich gleich aussehen?

  14. #14
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Also der Weg über $this->getReferer() ist in jedem Fall die beste Möglichkeit, da über den InsertTag auch nur diese Funktion aufgerufen wird, allerdings mit $this->getReferer(true) (https://github.com/contao/core/blob/...ller.php#L1447)


    Könntest du mal bitte folgendes probieren, nur aus Interesse :-)

    PHP-Code:
    var_dumpstrpos$this->replaceInsertTags('{{env::referer}}',false), 'leistungen' ) ); 
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

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

    Standard

    PHP-Code:
    var_dump$this->replaceInsertTags('{{env::referer}}') );
    //string(16) "de/leistungen/konferenzraeume.html" 
    string(16) - der String hat aber eigentlich 34 Zeichen. Hier passiert wohl eigentlich, dass $this->replaceInsertTags() den Insert tag {{env::referer}} gar nicht ersetzt, aber Contao selbst dann bei der Ausgabe der Seite schon. In Wirklichkeit sieht die Ausgabe wahrscheinlich so aus:
    PHP-Code:
    var_dump'{{env::referer}}' );
    //string(16) "{{env::referer}}" 
    Letzteres wird dann von Contao von
    PHP-Code:
    //string(16) "{{env::referer}}" 
    zu
    PHP-Code:
    //string(16)  "de/leistungen/konferenzraeume.html" 
    umgewandelt.

    Warum $this->replaceInsertTags() den Referer nicht direkt ersetzt: keine Ahnung. Ist aber eh sinnlos diese Funktion dafür zu verwenden.

    // edit: ah, wegen caching

  16. #16
    Contao-Fan Avatar von Webstylerin
    Registriert seit
    24.08.2009.
    Ort
    Schlüsselfeld, Bayern
    Beiträge
    403
    Partner-ID
    6232
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von the_scrat Beitrag anzeigen
    Also der Weg über $this->getReferer() ist in jedem Fall die beste Möglichkeit, da über den InsertTag auch nur diese Funktion aufgerufen wird, allerdings mit $this->getReferer(true) (https://github.com/contao/core/blob/...ller.php#L1447)
    Okay, dann lass ich das so. Again what learned. Danke sehr.

    Zitat Zitat von the_scrat Beitrag anzeigen
    Könntest du mal bitte folgendes probieren, nur aus Interesse :-)

    PHP-Code:
    var_dumpstrpos$this->replaceInsertTags('{{env::referer}}',false), 'leistungen' ) );
    //int(3) 
    Klar, siehe Kommentar im Code. Also liegts wohl am true-Parameter, was auch immer der macht.

  17. #17
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Der 2. Parameter im replaceInsertTags ist für das Caching zuständig.... ist ja lustig, dass es damit geht

    Nutz trotzdem lieber $this->getReferer() :-)
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  18. #18
    Contao-Fan Avatar von Webstylerin
    Registriert seit
    24.08.2009.
    Ort
    Schlüsselfeld, Bayern
    Beiträge
    403
    Partner-ID
    6232
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    PHP-Code:
    var_dump$this->replaceInsertTags('{{env::referer}}') );
    //string(16) "de/leistungen/konferenzraeume.html" 
    string(16) - der String hat aber eigentlich 34 Zeichen. Hier passiert wohl eigentlich, dass $this->replaceInsertTags() den Insert tag {{env::referer}} gar nicht ersetzt, aber Contao selbst dann bei der Ausgabe der Seite schon. In Wirklichkeit sieht die Ausgabe wahrscheinlich so aus:
    PHP-Code:
    var_dump'{{env::referer}}' );
    //string(16) "{{env::referer}}" 
    Letzteres wird dann von Contao von
    PHP-Code:
    //string(16) "{{env::referer}}" 
    zu
    PHP-Code:
    //string(16)  "de/leistungen/konferenzraeume.html" 
    umgewandelt.

    Warum $this->replaceInsertTags() den Referer nicht direkt ersetzt: keine Ahnung. Ist aber eh sinnlos diese Funktion dafür zu verwenden.
    Aaaaah! Das klingt auch noch logisch. Daran, dass das Ding ja bei der Ausgabe erstezt wird, hab ich gar net gedacht. Ich verwende öfters Insert-Tags in PHP-Skripten mit replaceInsertTags und hatte bisher noch keine Probleme in der Richtung. Nun kenn ich ja $this->getReferer().

    Vielen lieben Dank bei der Aufklärung.

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
  •