heavenkiller: AJAX und PHP Sessions

Servus beisammen!

Ich arbeite derzeit an einem AJAX-Projekt und möchte nun eine Art Administrationsbereich der mit AJAX arbeiten soll. Natürlich soll sich der Benutzer erst einloggen. Nun stellt sich mir die Frage, ob man ohne Probleme die PHP-Sessionfunktion benutzen kann (Stichwort Übertragung der Daten an den Server) oder ob ich mir ein eigenes Session-System, dass mit Cookies arbeitet schreiben?

Hat schon einer Erfahrungswerte sammeln können, ob Sessions auch mit AJAX funktionieren?

Gruß
Steffen

  1. Moin!

    Hat schon einer Erfahrungswerte sammeln können, ob Sessions auch mit AJAX funktionieren?

    Sessions nutzen wahlweise (einen GET-Parameter XOR einen POST-Parameter) OR ein Cookie zur Übermittlung der Session-ID. Alle Vorgehensweisen sind kompatibel mit XMLHttpRequest.

    Es wäre zu prüfen, ob das Cookie automatisch mitgeschickt wird (hab ich noch nicht probiert, es spricht aber nicht viel dagegen), ansonsten wäre die Session-ID vermutlich manuell per Javascript in dem Request mitzuschicken. Oder für den Fall, dass Cookies vom Benutzer nicht erlaubt werden, und der Fallback Systemanforderung ist.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Danke für die Antwort!

      Werde gleich mal testen, ob die Session automatisch mit verschickt wird.

      Bei Erfahrungswerten melde ich mich wieder!

    2. n'abend,

      Es wäre zu prüfen, ob das Cookie automatisch mitgeschickt wird (hab ich noch nicht probiert, es spricht aber nicht viel dagegen), ansonsten wäre die Session-ID vermutlich manuell per Javascript in dem Request mitzuschicken. Oder für den Fall, dass Cookies vom Benutzer nicht erlaubt werden, und der Fallback Systemanforderung ist.

      erfahrungsgemäß werden Cookies bei einem HTTP-Request (ohne weiteres Zutun) mitgeschickt. ;)

      weiterhin schönen abend...

      --
      wer braucht schon großbuchstaben?
      sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
  2. hi,

    Ich arbeite derzeit an einem AJAX-Projekt und möchte nun eine Art Administrationsbereich der mit AJAX arbeiten soll. Natürlich soll sich der Benutzer erst einloggen. Nun stellt sich mir die Frage, ob man ohne Probleme die PHP-Sessionfunktion benutzen kann (Stichwort Übertragung der Daten an den Server) oder ob ich mir ein eigenes Session-System, dass mit Cookies arbeitet schreiben?

    AJAX wird benutzt, um HTTP-Requests abzusetzen.
    Wo siehst du ein Problem?

    (Hast du verstanden, wie Session funktionieren - allgemein, und wie sie bei PHP realisiert sind?)

    Hat schon einer Erfahrungswerte sammeln können, ob Sessions auch mit AJAX funktionieren?

    Ja, HTTP-Requests mit AJAX funktionieren nach verbreiteter Erfahrung.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Lieber heavenkiller, (was genau willst Du "killen"?)

    und möchte nun eine Art Administrationsbereich der mit AJAX arbeiten soll.

    etwas dieser Art habe ich gerade hinter mir. Mein Admin-Bereich lädt den Verzeichnisbaum über XMLHttp-Requests dynamisch nach, da sonst eine HTML-Datei von über 500kB gesendet werden müsste, um das gesamte Verzeichnissystem der Web-Präsenz abzubilden.

    Natürlich soll sich der Benutzer erst einloggen. Nun stellt sich mir die Frage, ob man ohne Probleme die PHP-Sessionfunktion benutzen kann (Stichwort Übertragung der Daten an den Server) oder ob ich mir ein eigenes Session-System, dass mit Cookies arbeitet schreiben?

    Nach meiner Erfahrung ist bei der clientseitigen Akzeptant von Cookies (und der serverseitigen Verwendung solcher) keine weitere Maßnahme nötig. Der Server erhält die notwendigen Informationen, um die Session wieder aufzunehmen. Ohne Cookies sind spezielle Vorkehrungen notwendig.

    Hat schon einer Erfahrungswerte sammeln können, ob Sessions auch mit AJAX funktionieren?

    Ja, ich schrieb bereits davon.
    Ohne Cookies muss der XMLHttp-Request den Session-Namen und die Session-ID mitliefern (sinnvollerweise per GET). Sonst "erkennt" der Server den Benutzer hinter dem Request nicht.

    Ich habe das so gelöst: Das Action-Attribut in meinem Formular enthielt neben dem empfangenden Script auch die Session-Variablen, falls der Client keine Cookies hat.

    $action = 'mein_script.php';  
    if (!isset($_COOKIE[session_name()])) {  
        // SESSION-ID anhängen  
        $action .= '?'.SID;  
        }  
    
    

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.