Ergebnis 1 bis 14 von 14

Thema: AJAX-Request/Session

  1. #1
    Contao-Fan Avatar von mapfei
    Registriert seit
    11.05.2010.
    Ort
    Much
    Beiträge
    692

    Frage AJAX-Request/Session

    Hallo zusammen,

    folgendes: ich habe einen AJAX-Request, der Elemente nachlädt mit Links, die unterschiedlich sind, je nachdem ob man im Frontend angemeldet ist oder nicht. Das ganze nutzt SimpleAjax.php und die Frage ist, wie man dafür sorgen kann, dass dabei die Session bzw. die Anmeldung berücksichtigt wird.
    Viele Grüße, Markus
    --------------------------------
    Markus Pfeifer – Digital Designer & -Developer

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

    Standard

    In wie fern berücksichtigt? Dein eigener Code muss ja auf den angemeldeten FrontendUser oder auf die Session zugreifen.

  3. #3
    Contao-Fan Avatar von mapfei
    Registriert seit
    11.05.2010.
    Ort
    Much
    Beiträge
    692

    Standard

    Und wie gebe ich dem Ajax-Call Infos zur bestehenden Session mit?
    Viele Grüße, Markus
    --------------------------------
    Markus Pfeifer – Digital Designer & -Developer

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

    Standard

    Dem AJAX Call musst du nichts mitgeben, du greifst ja in deinem eigenen Code auf den Benutzer oder die Session zu. Mit
    PHP-Code:
    \FrontendUser::getInstance() 
    und
    PHP-Code:
    \Session::getInstance() 
    Wichtig ist nur, dass du SimpleAjaxFrontend.php nimmst, wenn du den FrontendUser brauchst.

  5. #5
    Contao-Fan Avatar von mapfei
    Registriert seit
    11.05.2010.
    Ort
    Much
    Beiträge
    692

    Standard

    Bis dahin schonmal Danke!
    Wie komme ich vom session-objekt zur frontend-user-id bzw. -objekt?
    Viele Grüße, Markus
    --------------------------------
    Markus Pfeifer – Digital Designer & -Developer

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

    Standard

    PHP-Code:
    \FrontendUser::getInstance() 
    Liefert dir bereits den Frontend User.

  7. #7
    Contao-Fan Avatar von mapfei
    Registriert seit
    11.05.2010.
    Ort
    Much
    Beiträge
    692

    Standard

    Beim Ajax-Call ist kein Frontenduser-Objekt vorhanden, das ist ja der Witz. Naja, hab's inzwischen hinbekommen.
    Viele Grüße, Markus
    --------------------------------
    Markus Pfeifer – Digital Designer & -Developer

  8. #8
    Contao-Fan Avatar von Babelfisch
    Registriert seit
    30.06.2009.
    Ort
    Leipzig
    Beiträge
    894

    Standard

    Zitat Zitat von mapfei Beitrag anzeigen
    Beim Ajax-Call ist kein Frontenduser-Objekt vorhanden, das ist ja der Witz. Naja, hab's inzwischen hinbekommen.
    Kannst du bitte kurz hier schreiben, wie du es hinbekommen hast? Habe nämlich gerade genau das gleiche Problem. FE_USER_LOGGED_IN ist zwar in meinen Ajax-Request gesetzt, jedoch liefert \FrontendUser::getInstance() nicht den aktuellen Frontend-User.

    Gruß
    Meine aktiven Contao-Projekte: LingoliaStiftung firmm

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

    Standard

    evt.
    PHP-Code:
    \FrontendUser::getInstance()->authenticate(); 

  10. #10
    Contao-Fan Avatar von Babelfisch
    Registriert seit
    30.06.2009.
    Ort
    Leipzig
    Beiträge
    894

    Standard

    Ok, damit scheint es zu funktionieren. Ich verstehe nur nicht ganz, wieso FE_USER_LOGGED_IN dann schon vor dem authenticate() auf true ist.

    Gruß
    Meine aktiven Contao-Projekte: LingoliaStiftung firmm

  11. #11
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard

    Hallo zusammen,

    auch wenn das Thema etwas älter ist, passt mein Anliegen evtl. hier rein.
    Auf eine ähnliche Art und Weise arbeite ich im Moment auch mit Sessions.
    Ich setze z.B. einen Wert mittels

    PHP-Code:
    $session = \Session::getInstance();
    $session->set("demo"111); 
    Wenn ich diesen später mittels session->get ausgebe, steht auch 111 in der Variable "demo".
    Wenn ich nun aber per Ajax (ebenfalls über die SimpleAjax Erweiterung) versuche diesen Wert zu überschreiben:

    PHP-Code:
    $session = \Session::getInstance();
    $session->set("demo"222); 
    steht der Wert 222 nur so lange in der Session, bis ich die Seite mit F5 neu lade. Anschließend steht wieder die 111 in der Session Variable, ohne dass ich diesen Wert explizit erneut setze.
    Kann es sein, dass contao bei Ajax Aufrufen mit der Session anders umgeht als im Normalfall? Ich verstehe gerade einfach überhaupt nicht, warum mein Wert 222 ein Neuladen der Seite nicht überlebt.

    Danke und Viele Grüße

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

    Standard

    Liest du den Wert auch per AJAX aus? Wenn ja, dann könnte das AJAX Caching vom Browser sein. Siehe zB die cache Einstellung bei jQuery.ajax.

  13. #13
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard

    Sowohl, als auch. Der normale Weg ist im Moment das Setzen des Session Wertes im Module.
    Das funktioniert wie erwartet. Wenn ich auf X setze, bleibt X in der Session bestehen und wenn Y gesetzt wird, steht auch nach dem Neuladen Y in der Session.
    Nur wenn das Setzen per Ajax geschieht, zeigt sich das unten beschriebene Problem.

    Ich habe auch mal probiert cache : false beim Ajax Aufruf zu setzen. Brachte jedoch keine Änderung.

  14. #14
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard

    Update: Habe das Problem lösen können.
    In meiner Ajax Klasse musste ich das Member nochmal extra authentifizieren.

    PHP-Code:
    $this->import('FrontendUser''Member');
    $this->Member->authenticate(); 
    Seitdem ich dies manuell durchführe werden auch die Session Werte korrekt geschrieben.

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
  •