ilch Forum » Ilch CMS 2.X » Allgemein » GET-Parameter in URLs?

Geschlossen
  1. #1
    User Pic
    BadRandolph Mitglied
    Registriert seit
    31.05.2006
    Beiträge
    26
    Beitragswertungen
    8 Beitragspunkte
    Guten Abend,

    ist es möglich, normale GET-Parameter in URLs zu verwenden und wenn ja, wie? Ich habe z.B. diesen Aufruf:

    https://domain.de/index.php/wow/battleNet/callback?code=xxxxxxxxxxxxxxxxxxxxxxxxx&state=yyyyyyyyyyyyyyyyyyyyyyyyyyyy


    => Das ist der Callback eines OAuth-Prozesses. Wenn ich bzw. der OAuth-Provider die URL aber aufrufen, kommt eine "leere" Seite, das Layout usw. ist da, jedoch kein Inhalt. Die entsprechende Action ("callback") scheint gar nicht aufgerufen zu werden, vielleicht habe ich es aber auch nur falsch gemacht.

    Da die Callback-URL vom OAuth-Provider zusammengebaut wird habe ich auf das Format keinen Einfluss.

    Ich habe testweise ein kleines Script gebaut, das das Format vom o.g. Format in das Format

    https://domain.de/index.php/wow/battleNet/callback/code/xxxxxxxxxxxxxxxxxxxxxxxxx/state/yyyyyyyyyyyyyyyyyyyyyyyyyyyy


    umwandelt (durch einen Redirect mit den passenden Variablen), dann kann ich die Daten via

    $this->getRequest()->getParam('code');


    resp.

    $this->getRequest()->getParam('state');


    abrufen, das wäre aber eher eine Notlösung als die bevorzugte Lösung.

    Vielen Dank für die Hilfe!

    Grüße,
    Tobi


    verwendete ilch Version: 2.0 (alpha)
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    corian Entwickler
    Registriert seit
    16.06.2011
    Beiträge
    1.096
    Beitragswertungen
    122 Beitragspunkte
    Hey, ja ist möglich.
    Bei dieser url

    https://domain.de/index.php/wow/battleNet/callback?code=xxxxxxxxxxxxxxxxxxxxxxxxx&state=yyyyyyyyyyyyyyyyyyyyyyyyyyyy


    Um an den Wert "code" zu kommen, einfach

    $this->getRequest()->getQuery('code')


    für "state" dann

    $this->getRequest()->getQuery('state')
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    BadRandolph Mitglied
    Registriert seit
    31.05.2006
    Beiträge
    26
    Beitragswertungen
    8 Beitragspunkte
    Hallo Corian,

    vielen Dank für die schnelle Antwort. Leider klappt das nicht, die Action scheint gar nicht ausgeführt zu werden.


    Hier mal ein Auszug aus der Action:

    public function callbackAction() {
            die('test');
            $code = $this->getRequest()->getQuery('code');
            $state = $this->getRequest()->getQuery('state');
            
            if(empty($code) || empty($state)) {
                $this->redirect($this->getRequest()->getModuleName() . '/' . $this->getRequest()->getControllerName() . '/callbackError');
            }
            // weiter code...
    }


    Wenn ich das hier aufrufe:

    https://domain.tld/index.php/wow/battleNet/callback?code=abcdef&state=12345


    bleibt die Seite bis auf das Layout leer.

    Nehme ich die GET-Parameter weg:

    https://domain.tld/index.php/wow/battleNet/callback


    ... wird wie erwartet durch das die('test'); nur "test" auf dem Bildschirm ausgegeben.

    Um ein Fehler in meinem Modul auszuschließen das selbe Spiel mit dem "Artikel"-Modul:

    https://domain.tld/index.php/article/index/index?test=1234


    => geht nicht, es wird nur das Layout angezeigt, kein Inhalt.

    https://domain.tld/index.php/article/index/index


    => Klappt hingegen ohne Probleme.

    Ich weiß natürlich nicht ob das Verhalten so gewünscht ist.

    Es könnte jetzt noch an irgendwelchen Server-Einstellungen liegen, das müsste aber alles XAMPP-Standard sein. Mir fällt auch keine Einstellung ein, die zu diesem Verhalten führen würde.

    Falls das Verhalten so nicht gewünscht ist: Handelt es sich vielleicht um einen Bug beim Request-URL-Parsing / Routing? Vielleicht kann das ja mal jemand auf einer anderen Plattform testen, ich habe leider gerade nur das (möglicherweise doch verkorkste) XAMPP zur Verfügung.

    EDIT: Habe es gerade mit dem aktuellen master, komplett frische Installation, getestet, dort sieht es genauso aus.

    Grüße,
    Tobi


    Zuletzt modifiziert von BadRandolph am 22.06.2016 - 01:02:35
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    corian Entwickler
    Registriert seit
    16.06.2011
    Beiträge
    1.096
    Beitragswertungen
    122 Beitragspunkte
    Wenn du nur eine leere Seite erhälst, kann es natürlich sein das er die view nicht findet.
    Ich denke mal wenn du ein "/" vor dem "?" machst, sollte es funktionieren.

    https://domain.tld/index.php/wow/battleNet/callback/?code=abcdef&state=12345
    1 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    BadRandolph Mitglied
    Registriert seit
    31.05.2006
    Beiträge
    26
    Beitragswertungen
    8 Beitragspunkte
    ZitatZitat geschrieben von corian
    Wenn du nur eine leere Seite erhälst, kann es natürlich sein das er die view nicht findet.
    Ich denke mal wenn du ein "/" vor dem "?" machst, sollte es funktionieren.

    https://domain.tld/index.php/wow/battleNet/callback/?code=abcdef&state=12345


    Das wars! Vielen Dank glücklich
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Hab den Fehler mal behoben, so dass es jetzt auch ohne / vor dem ? funktionieren sollte.


    Zuletzt modifiziert von Mairu am 22.06.2016 - 13:01:39
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    1 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten