Jense: Session ohne Cookies

Hi,
da ich bzgl meiner anderen Anfrage (Session und JSON) nicht weiter komme (es weis wohl keiner - ? - welche Abfrage man machen muss um für eine geg. SessionId zu sehen ob diese aktuell schon existiert oder nicht)... kann mir hoffentlich jemand wenigstens folgende Frage beantworten:
warum funktioniert
ini_set("session.use_trans_sid", "1");
bei mir nicht?
Wenn ich ini_set("session.use_cookies", "0");
setze, dann werden keine cookies mehr gesetzt, und es wird jedesmal eine neue Session gestartet egal ob
ini_set("session.use_trans_sid", " "); auf 0 oder 1 steht (und ab PHP Version 5 soll das ja angeblich per ini_set änderbar sein). Auch eine Änderung der php.ini macht hierbei keinen Unterschied.
Wer weis Rat?

Jense

  1. Hello,

    ini_set("session.use_trans_sid", "1");
    Wenn ich ini_set("session.use_cookies", "0");

    Wo steht denn 'session.use_only_cookies'?

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    1. Hallo Tom,

      ini_set("session.use_trans_sid", "1");
      Wenn ich ini_set("session.use_cookies", "0");

      Wo steht denn 'session.use_only_cookies'?

      Du sprichst in Rätseln...
      also eine Änderung in 'session.use_only_cookies' macht bei mir keinen Unterschied. Im folgenden nochmal das 'ganze' Skript

      <?php
      ini_set("session.use_cookies", "0");
      ini_set('session.use_only_cookies','0');
      ini_set("session.use_trans_sid", "1");
      @session_start();
      echo session_id();
      ?>

      Wenn ich diese Seite hintereinander Aufrufe, sollte sich die session_id doch nicht mehr ändern, oder? Wenn 'session.use_cookies' auf 1 gesetzt ist klappt das auch. Aber ohne cookies eben nicht 8(

      Gruss Jense

      1. Hello,

        Wo steht denn 'session.use_only_cookies'?

        Du sprichst in Rätseln...

        Nö, das Rätsel hattest Du hinterlassen und ich habe es versucht zu enträtseln... :-)

        also eine Änderung in 'session.use_only_cookies' macht bei mir keinen Unterschied. Im folgenden nochmal das 'ganze' Skript

        <?php
        ini_set("session.use_cookies", "0");
        ini_set('session.use_only_cookies','0');
        ini_set("session.use_trans_sid", "1");

        session_start();

        echo session_id();
        ?>

        Fehlermeldung unterdrücken? Warum denn sowas Dusseliges, wenn man Fehler sucht?

        Und schalte das Error-Reporting auch an und das Anzeigen von Fehlern (ini_set('display_errors', 1)) auch.

        Vermutlich kann die Sessiondatei nicht angelegt werden, weil die Rechte fehlen für das Verzeichnis aus 'session.save_path'? Dann werden auch keine Sessionnummern gesendet, weder als Cookie, noch als transparente Sessionnummer...

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

        1. Hallo Tom hier Dussel (mal mehr und mal noch mehr),

          Fehlermeldung unterdrücken? Warum denn sowas Dusseliges, wenn man Fehler sucht?

          Dusselig eben :)

          Vermutlich kann die Sessiondatei nicht angelegt werden, weil die Rechte fehlen für das Verzeichnis aus 'session.save_path'? Dann werden auch keine Sessionnummern gesendet, weder als Cookie, noch als transparente Sessionnummer...

          wie gesagt mit cookies geht es aber ohne @ bekomme ich folgende Fehlermeldung:
          Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\test07PHP.php:29) in C:\xampp\htdocs\test07PHP.php on line 45

          kannst Du damit was anfangen?

          Gruss Jense

          1. Hello,

            Vermutlich kann die Sessiondatei nicht angelegt werden, weil die Rechte fehlen für das Verzeichnis aus 'session.save_path'? Dann werden auch keine Sessionnummern gesendet, weder als Cookie, noch als transparente Sessionnummer...

            wie gesagt mit cookies geht es aber ohne @ bekomme ich folgende Fehlermeldung:
            Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\test07PHP.php:29) in C:\xampp\htdocs\test07PHP.php on line 45

            Das sind doch schon umwerfende neue Erkenntnisse:
            Du arbeitest auf Windows.
            Du benutzt XAMPP

            Du kassierst eine Fehlermeldung, die darauf hin deutet, dass davor schon eine Ausgabe stattgefunden haben muss. Das können ein Leerzeichen oder eine Leerzeile in der Datei sein, dass da vor dem '<?php' herumgammelt, oder auch eine BOM, wenn Du mit Deinem Editor in utf-8 abspeichern solltest. Allerdings müsste man die BOM im Browser eigentlich sehen...

            Handelt es sich denn um genau dieselbe Datei, in der die beiden Versionen (mit Cookie / ohne Cookie) stehen? Funktioniert die Cookie-Läsung jetzt auch noch?

            Das sind natürlich alles Sachen, die ein "Fern-Debugger" nicht sehen kann ;-)

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

            1. hi Tom,
              erstmal Danke, dass Du Dich so reinhängst!!!

              Das sind doch schon umwerfende neue Erkenntnisse:

              :))

              Du arbeitest auf Windows.
              Du benutzt XAMPP

              Du kassierst eine Fehlermeldung, die darauf hin deutet, dass davor schon eine Ausgabe stattgefunden haben muss. Das können ein Leerzeichen oder eine Leerzeile in der Datei sein, dass da vor dem '<?php' herumgammelt, oder auch eine BOM, wenn Du mit Deinem Editor in utf-8 abspeichern solltest. Allerdings müsste man die BOM im Browser eigentlich sehen...

              Also ich habe jetzt mal alles rausgenommen der Anfang der Datei sieht also so aus:

              <?php
              ini_set("session.use_cookies", "0");
              ini_set('session.use_only_cookies','0');
              ini_set("session.use_trans_sid", "1");
              session_start();
              echo session_id();

              danach kommen noch ein paar Versuche die sind aber momentan alle auskommentiert

              Handelt es sich denn um genau dieselbe Datei, in der die beiden Versionen (mit Cookie / ohne Cookie) stehen? Funktioniert die Cookie-Läsung jetzt auch noch?

              ja die gleiche Datei, ich mache nur bei
              ini_set("session.use_cookies", "0");
              aus der 0 eine 1 - dann geht es auch...aber mit 0 klappt es immer noch nicht

              Das sind natürlich alles Sachen, die ein "Fern-Debugger" nicht sehen kann ;-)

              Leider, leider... ich hoffe Du hast noch eine Idee!

              Gruss Jense

              1. Hello,

                danach kommen noch ein paar Versuche die sind aber momentan alle auskommentiert

                Leider, leider... ich hoffe Du hast noch eine Idee!

                ich zitiere nochmal:
                (output started at C:\xampp\htdocs\test07PHP.php:29) in C:\xampp\htdocs\test07PHP.php on line 45

                Ich brauche also diese Zeile +- ein paar drum herum... (die wird jetzt eventuell gewandert sein) und dann die Info, ob die VOR deiner hier geposteten Sequenz zum Sessionstart steht oder danach...

                Harzliche Grüße vom Berg
                http://bergpost.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                1. Hello again,
                  also ich habe mal eine neue Datei aufgemacht die sieht so aus:

                  <?php
                  ini_set("session.use_cookies", "1");
                  ini_set('session.use_only_cookies','0');
                  ini_set("session.use_trans_sid", "1");
                  session_start();
                  echo session_id();
                  ?>

                  die Fehlermeldung ist weg (aber taucht tatsächlich wieder auf wenn in utf8 abgespeichert!)
                  Wenn ich jetzt browserseitig cookies zulasse bleibt die session gleich (nach jedem refresh). Sobald ich aber cookies nicht erlaube, bekomme ich jedesmal eine neue sessionid, da offensichtlich diese nicht angehängt oder entsprechend ausgewertet wird!?

                  Was nun?

                  Jense

                  1. ReHello,

                    <?php
                    ini_set("session.use_cookies", "1");
                    ini_set('session.use_only_cookies','0');
                    ini_set("session.use_trans_sid", "1");
                    session_start();
                    echo session_id();
                    ?>

                    die Fehlermeldung ist weg (aber taucht tatsächlich wieder auf wenn in utf8 abgespeichert!)
                    Wenn ich jetzt browserseitig cookies zulasse bleibt die session gleich (nach jedem refresh). Sobald ich aber cookies nicht erlaube, bekomme ich jedesmal eine neue sessionid, da offensichtlich diese nicht angehängt oder entsprechend ausgewertet wird!?

                    Was nun?

                    Nun ist guter Rat erst noch billig.
                    Wir haben doch wahrscheinlich schon den nächten Meilenstein erreicht.
                    Wie das im Hintergrund und bei dem Ping-Pong, dass Browser und Webserver da spielen nun genau zusammenhängt, kann ich mir auch noch nicht zusammenreimen.

                    Aber Mitschuld an der Misere scheint Dein Editor zu sein.
                    Welcher ist das?
                    Sorge dafür, dass der bei PHP-Dateien keine Byte Order Mark abspeichert in der Datei.
                    Das muss sich einstellen lassen beim Editor, zumindeest generell, wenn schon nicht gezielt für die Dokumentklasse "PHP".

                    Und dann sollte es eigentlich funktionieren.
                    Wir haben hier neulich einen ähnlichen Fall theoretisch und praktisch durchexerziert, und da hat es nachher auch geklappt.

                    Sinnvoll ist es immer, wenn man auch Zugriff auf das Session-Verzeichnis hat.
                    Wenn Du lokal entwickelst, könntest Du also nebenbei mit dem Datei-Explorer nachschauen, ob im Sessionverzeichnis eine neue Datei angelegt wird, wenn Du das Script startest.

                    Harzliche Grüße vom Berg
                    http://bergpost.annerschbarrich.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
                    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                    1. ReReHello,

                      Aber Mitschuld an der Misere scheint Dein Editor zu sein.
                      Welcher ist das?

                      seit neustem nutze ich notepad++, habe es aber gerade nochmal mit dem normalen Windows Editor probiert und es läuft aufs gleiche hinaus

                      Sorge dafür, dass der bei PHP-Dateien keine Byte Order Mark abspeichert in der Datei.
                      Das muss sich einstellen lassen beim Editor, zumindeest generell, wenn schon nicht gezielt für die Dokumentklasse "PHP".

                      aber wo?

                      Und dann sollte es eigentlich funktionieren.

                      Du bist ein Optimist ;)

                      Sinnvoll ist es immer, wenn man auch Zugriff auf das Session-Verzeichnis hat.
                      Wenn Du lokal entwickelst, könntest Du also nebenbei mit dem Datei-Explorer nachschauen, ob im Sessionverzeichnis eine neue Datei angelegt wird, wenn Du das Script startest.

                      weist Du zufällig wo, also in dem einzigen Session-Ordner den ich im xampp-Verzeichnis gefunden habe, werden keine aktuellen Dateien angezeigt

                      Gruss Jense

                      1. Hello,

                        bei notepad++ lässt sich das auf jeden Fall einstellen. Ich hatte es neulich extra installiert, um die Frage bantworten zu können, aber es ist dem Hardware-Crash zum Opfer gefallen...

                        Bis ich einen "neuen" PC habe, muss ich etwas haushalten mit der HDD :-(

                        Harzliche Grüße vom Berg
                        http://bergpost.annerschbarrich.de

                        Tom

                        --
                        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                        Nur selber lernen macht schlau
                        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                  2. Moin!

                    die Fehlermeldung ist weg (aber taucht tatsächlich wieder auf wenn in utf8 abgespeichert!)

                    Weil dein Editor dann das Zeichen "BOM" unsichtbar an die erste Stelle schreibt. Es gibt aber in vernünftigen Editoren auch den Modus "ohne BOM".

                    Wenn ich jetzt browserseitig cookies zulasse bleibt die session gleich (nach jedem refresh). Sobald ich aber cookies nicht erlaube, bekomme ich jedesmal eine neue sessionid, da offensichtlich diese nicht angehängt oder entsprechend ausgewertet wird!?

                    Das ist logisch.

                    Wenn du deine Seite aufrufst, tippst du als URL sowas wie "http://server/skript.php". Der Browser schickt den ersten Request für diese URL, der Server arbeitet das Skript ab, und schickt ein Ergebnis zurück.

                    a) Bei der Session ohne Cookie wird nur die "HTML-Seite" mit der neu generierten Session-ID geschickt.

                    b) Bei der Session MIT Cookie wird zusätzlich noch die Anweisung an den Browser geschickt, das Cookie zu speichern - und in dem steht die gerade generierte Session-ID drin.

                    Jetzt kommt ein Reload.

                    a) Bei der Session ohne Cookie wird einfach nur die Seite neu geladen. Es passiert genau dasselbe, wie beim ersten Mal, es wird eine neue Session-ID generiert und nur in die Seite geschrieben.

                    b) Bei der Session MIT Cookie senden der Browser das gesetzte Cookie mit zurück, der Server erkennt dadurch die bereits begonnene Session und generiert KEINE neue Session-ID.

                    Was nun?

                    Du hast noch nicht schlüssig beantwortet, warum du keine Cookies benutzen willst, und warum du den gesamten Session-Mechanismus selbst realisieren willst.

                    Insbesondere, wenn du schon so große Schwierigkeiten hast, die absolut typische Fehlermeldung "headers already sent" zu behandeln, was auf ein gewisses Anfängertum hindeutet.

                    - Sven Rautenberg

                    --
                    "Love your nation - respect the others."
                    1. Hello,

                      Wenn du deine Seite aufrufst, tippst du als URL sowas wie "http://server/skript.php". Der Browser schickt den ersten Request für diese URL, der Server arbeitet das Skript ab, und schickt ein Ergebnis zurück.

                      Und weil das weder Links noch ein Formular enthält bisher, weiß PHP überhaupt nicht, wohin mit der transparenten Session-ID

                      So zumindest, wenn das Script nichts anderes als die Session-Funktionen und ein "normales echo" enthält bisher .

                      Harzliche Grüße vom Berg
                      http://bergpost.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau
                      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                    2. Hi Sven,
                      und ich dachte schon der Sonntag ist total am A....

                      Weil dein Editor dann das Zeichen "BOM" unsichtbar an die erste Stelle schreibt. Es gibt aber in vernünftigen Editoren auch den Modus "ohne BOM".

                      und ist Notepad++ was vernünftiges? Auf den ersten Blick habe ich noch nichts zum Einstellen gefunden, aber ich schau gleich nochmal

                      Das ist logisch.

                      wohl dem der so denken kann ;)

                      Wenn du deine Seite aufrufst, tippst du als URL sowas wie "http://server/skript.php". Der Browser schickt den ersten Request für diese URL, der Server arbeitet das Skript ab, und schickt ein Ergebnis zurück.

                      a) Bei der Session ohne Cookie wird nur die "HTML-Seite" mit der neu generierten Session-ID geschickt.

                      b) Bei der Session MIT Cookie wird zusätzlich noch die Anweisung an den Browser geschickt, das Cookie zu speichern - und in dem steht die gerade generierte Session-ID drin.

                      Jetzt kommt ein Reload.

                      a) Bei der Session ohne Cookie wird einfach nur die Seite neu geladen. Es passiert genau dasselbe, wie beim ersten Mal, es wird eine neue Session-ID generiert und nur in die Seite geschrieben.

                      b) Bei der Session MIT Cookie senden der Browser das gesetzte Cookie mit zurück, der Server erkennt dadurch die bereits begonnene Session und generiert KEINE neue Session-ID.

                      Also wenn ich das richtig verstanden habe dann gibt es nach einem reload bei einer Nicht-Cookielösung immer eine neue Session - jetzt wo Du es sagst kommt mir das irgendwie auch logisch vor und auch so von mir gewollt (bei der cookielösung müsste man irgendwie automatisch beim reload den cookie löschen um den gleichen Effekt zu haben, richtig?).
                      Jetzt aber nochmal zum Verständnis: wenn ich (ausgehend von einer Session ohne cookies) keinen Reload mache sondern per link eine neue Seite vom Server anfordere bzw im client ein neues Fenster öffne dann hängt an deren url die Session??? Und die würde bei einer JSON-Anfrage an den Server auch mitgesandt???

                      Du hast noch nicht schlüssig beantwortet, warum du keine Cookies benutzen willst, und warum du den gesamten Session-Mechanismus selbst realisieren willst.

                      Also Cookies möchte ich nicht da viele Leute das ablehnen, warum auch immer, ich möchte soweit möglich immer eine Lösung die universell, zuverläassig und unproblematisch ist (für den User nicht notwendigerweise jetzt für mich 8)).
                      Auch wenn bei meinen Anfragen sicher immer wieder der Eindruck entsteht, das ich jedesmal das Rad neu erfinden möchte - genau das will ich eigentlich nicht, aber ich will die Sachen auch verstehen, damit ich möglichst genau das umsetzen kann was ich mir vorschwebt. Mein Problem ist einfach ich weiss ziemlich genau was ich erreichen will, habe aber maximal eine vage Ahnung davon ob und wie es gehen könnte. Sorry deshalb für die vielen oft sicher trivialen oder unsinnigen (evtl auch manchmal nur unsinnig erscheinenden) Fragen.

                      Insbesondere, wenn du schon so große Schwierigkeiten hast, die absolut typische Fehlermeldung "headers already sent" zu behandeln, was auf ein gewisses Anfängertum hindeutet.

                      Das 'gewisse' kannst Du weglassen, dann liegst Du richtig. Aber wie gesagt ich habe eine Aufgabe und die möchte ich möglichst so umsetzen wie ich mir das vorstelle. Vielleicht ein etwas grosser Anspruch für das allererste Web-Projekt, aber wie heisst es so schön: man wächst mit seinen Aufgaben und wenn man nicht mehr weiter weiss, dann geht man hier ins Forum. In diesem Sinne

                      Gruss Jens

                      Wäre super Sven wenn Du mir die oben eingebaute Frage noch beantwortest, denn dann wäre ich heute doch noch einen kleinen Schritt weiter gekommen.

                      1. Hallo Jens,

                        Weil dein Editor dann das Zeichen "BOM" unsichtbar an die erste Stelle schreibt. Es gibt aber in vernünftigen Editoren auch den Modus "ohne BOM".

                        und ist Notepad++ was vernünftiges? Auf den ersten Blick habe ich noch nichts zum Einstellen gefunden, aber ich schau gleich nochmal

                        a) zeigt notepad++ den Modus in der Statuszeile an (links vom Schreibmodus).
                        b) kannst Du es über das Menü "Format" einstellen.

                        Freundliche Grüße

                        Vinzenz

                      2. Moin!

                        und ist Notepad++ was vernünftiges? Auf den ersten Blick habe ich noch nichts zum Einstellen gefunden, aber ich schau gleich nochmal

                        Du suchst die Einstellung "ANSI als UTF" (unten in der Statuszeile)

                        Also wenn ich das richtig verstanden habe dann gibt es nach einem reload bei einer Nicht-Cookielösung immer eine neue Session - jetzt wo Du es sagst kommt mir das irgendwie auch logisch vor und auch so von mir gewollt (bei der cookielösung müsste man irgendwie automatisch beim reload den cookie löschen um den gleichen Effekt zu haben, richtig?).

                        Nein, das ist falsch. Wenn in der URL die Session-ID stünde, würde der Reload sich genauso verhalten, wie bei Cookies.

                        Jetzt aber nochmal zum Verständnis: wenn ich (ausgehend von einer Session ohne cookies) keinen Reload mache sondern per link eine neue Seite vom Server anfordere bzw im client ein neues Fenster öffne dann hängt an deren url die Session??? Und die würde bei einer JSON-Anfrage an den Server auch mitgesandt???

                        AJAX-Requests senden ebenfalls alle gesetzten Cookies an den Server zurück, würden also auch die Session-ID mitschicken. PHP setzt hängt allerdings an URLs, die sich in Javacript-Bereichen befinden, nicht automatisch die Session-ID in die URL, wenn es feststellt, dass bislang keine Cookies erlaubt wurden. Sowas muß man manuell behandeln, wenn man Sessions nicht nur mit Cookies realisieren will - die Konstante SID enthält in PHP den String, den man an die URL hängen muß (wenn Cookies entdeckt wurden, ist die Konstante ein leerer String).

                        Du hast noch nicht schlüssig beantwortet, warum du keine Cookies benutzen willst, und warum du den gesamten Session-Mechanismus selbst realisieren willst.

                        Also Cookies möchte ich nicht da viele Leute das ablehnen, warum auch immer, ich möchte soweit möglich immer eine Lösung die universell, zuverläassig und unproblematisch ist (für den User nicht notwendigerweise jetzt für mich 8)).

                        Hast du dich über die möglichen Sicherheitsrisiken der URL-übermittelten Session-ID informiert?

                        Hast du dich über die in PHP integrierten Fallback-Mechanismen informiert, die bei Nichtverfügbarkeit von Cookies greifen?

                        - Sven Rautenberg

                        --
                        "Love your nation - respect the others."
                        1. Hallo Sven,

                          Hast du dich über die möglichen Sicherheitsrisiken der URL-übermittelten Session-ID informiert?

                          ja ich hab schon was darüber gelesen. Ist dieses Problem auch noch relevant wenn man (wie ich vorhabe) sämtliche Verbindung über SSL macht, sprich ist der url-anhang dann auch irgendwie verschlüsselt? Auch aus diesem Grunde wollte ich ursprünglich ja die Session über JSON quasi manuell steuern, aber da mir niemand sagen konnte wie man auf diese Weise abfragt ob eine Session schon existiert oder nicht habe ich das erstmal fallengelassen.

                          Hast du dich über die in PHP integrierten Fallback-Mechanismen informiert, die bei Nichtverfügbarkeit von Cookies greifen?

                          Ich verstehe dass so, dass Du empfiehlst die vorgesehene cookievariante (mit den entsprechenden cookieeinstellungen etc) zu nehmen ansonsten die sowieso automatisch erzeugte url-lösung zu nutzen und eben dann für den non-cookie-fall und json den Anhang selber zu machen. Da ich wie gesagt vom non-cookie-fall ausgehe und bei mir json die Hauptrolle spielt und eben die url-lösung sowieso nicht ganz so optimal ist, komme ich jetzt nochmal zu meiner Ausgangsfrage (Anfrage 'Session und JSON') zurück, denn ich glaube Du weisst ob und wenn wie es geht: Wenn ich die session_id per json an den Server schicke, mit was muss ich diese session_id dann wie vergleichen ode wo muss man diese einsetzen um festzustellen ob bereits eine entsprechende Session existiert oder ggf eine neue Session(id) gestartet werden muss?

                          Gruss Jense

                          1. Moin!

                            Hast du dich über die möglichen Sicherheitsrisiken der URL-übermittelten Session-ID informiert?

                            ja ich hab schon was darüber gelesen. Ist dieses Problem auch noch relevant wenn man (wie ich vorhabe) sämtliche Verbindung über SSL macht, sprich ist der url-anhang dann auch irgendwie verschlüsselt?

                            Du hast offenbar diffuse Sicherheitsbedenken, ohne aber konkrete Überlegungen auf Basis von handfesten Fakten anstellen zu können.

                            Das Problem mit der in der URL enthaltenen Session-ID ist, dass diese Information allzu leicht vom Browserbenutzer in die Welt getragen werden kann, was unerwünscht sein kann. Auch eine HTTPS-URL kann man aus dem Browserfenster in eine Mail kopieren, der Mailempfänger surft dann unter der gleichen Session weiter, wenn er vor Ablauf der Sessiongültigkeit die URL aufruft.

                            SSL verschlüsselt, das hilft aber nur gegen bösartige Mitlauscher auf der Leitung.

                            Auch aus diesem Grunde wollte ich ursprünglich ja die Session über JSON quasi manuell steuern, aber da mir niemand sagen konnte wie man auf diese Weise abfragt ob eine Session schon existiert oder nicht habe ich das erstmal fallengelassen.

                            Dein Argument gegen Cookies ist "die haben 'viele' abgeschaltet". Und deshalb willst du dich zwingend auf Javascript verlassen - von dem ich behaupte, dass das noch viel mehr Leute abgeschaltet haben, weil es für die diversen nervigen Effekte vor allem in Werbung verantwortlich ist.

                            Klingt irgendwie nicht sonderlich faktengerecht, würde ich meinen.

                            Da ich wie gesagt vom non-cookie-fall ausgehe

                            Du solltest vom Cookie-Fall ausgehen. Der ist Standard in über 90% der Nutzerfälle, würde ich schätzen.

                            Du gehst schließlich auch von aktiviertem Javascript aus:

                            und bei mir json die Hauptrolle spielt und eben die url-lösung sowieso nicht ganz so optimal ist, komme ich jetzt nochmal zu meiner Ausgangsfrage (Anfrage 'Session und JSON') zurück, denn ich glaube Du weisst ob und wenn wie es geht: Wenn ich die session_id per json an den Server schicke, mit was muss ich diese session_id dann wie vergleichen ode wo muss man diese einsetzen um festzustellen ob bereits eine entsprechende Session existiert oder ggf eine neue Session(id) gestartet werden muss?

                            PHP macht alles automatisch, wenn du Cookies zuläßt und ausschließlich Cookies nutzt, du mußt dich da um nichts kümmern.

                            Wenn du das Fallback nutzen willst, hast du manuell dafür zu sorgen, dass alle URL-Requests des Browsers, die nicht von PHP automatisch (durch die Option session.use_trans_sid) um die Session-ID ergänzt werden, diese manuell erhalten.

                            PHP hängt, sofern der Request keine Cookies mit Session-ID mitgeschickt hat, an alle URLs ohne Domainangabe (die also potentiell zu einem fremden Server führen könnten), die sich in Links, Formularzielen oder Frames befinden (siehe url_rewriter.tags). Alle anderen URLs mußt du in deinem Skript passend bearbeiten - üblicherweise bedeutet dass, an eine URL als Parameter die Konstante SID anzuhängen (darauf achten, dass sie leer ist, wenn Cookies genutzt werden), POST-Requests erfordern noch eine aufwendigere Behandlung, indem man die Session-ID sowie den Session-Namen in den Request einfügt (Funktionen session_name() und session_id() liefern die notwendigen Daten).

                            - Sven Rautenberg

                            --
                            "Love your nation - respect the others."
                            1. Hi Sven,
                              danke für die Antwort, sollte mir wirklich weiterhelfen. Danke!!!

                              Gruss Jense