PHP und Sessions
Thomas
- php
0 Rouven0 wahsaga0 Thomas0 Johannes Zeller0 Thomas0 Rouven0 Thomas
0 Ingo Turski
0 SID bei Cookies
Felix Riesterer
Hallo SelfHTMLer!
Hätte mal eine Frage bzgl. Sessions in PHP:
Ich habe einen Loginbereich der mit Sessions funktioniert. Nach erfolgreicher Authentifizierung des Benutzers wird $_SESSION['logged_in'] auf true gesetzt.
Auf allen Seiten des internen Bereiches wird geprüft ob diese Variable auf true ist, ansonsten wird auf die Login-Seite weitergeleitet.
Als ich mit dem Programmieren dieses Systems anfing, übergab ich die Session_id nicht über die URL sondern ließ sie einfach automatisch in ein Cookie schreiben -> Funktionierte im Firefox auch ohne Probleme. Als ich dann mein System einmal mit dem IE7 testete, stellte ich fest, dass er die Cookies nicht speichert sondern die Session_id über die URL haben möchte. Ich hätte das gelöst indem ich an die URL einfach noch die Konstante SID anhänge und fertig.
Meine Frage nun: Ist das der richtige Weg? Falls der Browser Cookies akzeptiert ist SID ja nicht gesetzt und es wird auch nichts angehängt. Oder soll ich User darauf hinweisen, dass Cookies akzeptiert werden müssen bevor sie sich einloggen können und das ganze nur über die Cookies machen?
Liebe Grüße und Danke
Thomas
Hello,
PHP ist eigentlich von Haus aus relativ fähig. Sofern du bei deiner Installation Einfluss auf die PHP-Einstellungen hast, schau dir mal die Einstellungen wie sesion.use_only_cookies oder session.use_trans_sid an.
Die ermöglichen es PHP automatisch diese Entscheidung zu treffen* und ggf. auf die URL auszuweichen. Dann brauchst du dich auch nicht mehr um das Anhängen der SID zu kümmern.
MfG
Rouven
* korrigiert mich wenn ich falsch liege, habe das irgendwie so in Erinnerung, oder weicht PHP dann sicherheitshalber auf beides gleichzeitig aus?!
hi,
* korrigiert mich wenn ich falsch liege, habe das irgendwie so in Erinnerung, oder weicht PHP dann sicherheitshalber auf beides gleichzeitig aus?!
Den ersten Versuch, wenn die Session gerade erstmalig gestartet wurde, macht PHP dann mit "beidem" - es versucht, einen Cookie zu setzen, _und_ gibt die SID als Parameter in site-internen Links und Formularen mit. Es kann schließlich zu dem Zeitpunkt noch nicht wissen, ob der Client den Cookie akzeptieren wird.
Beim nächsten Request schickt der Client dann den Cookie entweder wieder mit - dann geht PHP davon aus, dass es dieses Verhalten auch für den Rest der Sitzung erwarten darf, und nutzt nur noch den Cookie zur Übergabe der SID. Oder es wird nicht wieder mitgeschickt - dann fügt PHP weiterhin die SID an Links und in Formulare ein.
gruß,
wahsaga
»»Oder es wird nicht wieder mitgeschickt - dann fügt PHP weiterhin die SID an Links und in Formulare ein.
Die SID muss ich aber schon selber anhängen oder? - War bei mir jedenfalls immer der Fall.
Hallo Thomas,
Die SID muss ich aber schon selber anhängen oder? - War bei mir jedenfalls immer der Fall.
Nur wenn du in der Konfiguration
session.use.trans_sid = 0
gesetzt ist.
Schöne Grüße,
Johannes
Hallo nochmals!
Ich habe es jetzt so gelöst, dass ich immer die Konstante SID in diesem Format www.url.com?SID&s=1 anhänge, egal ob ein Cookie gesetzt wurde oder nicht. Falls eines gesetzt wurde ist SID ja leer und die URL würde so aussehen www.url.com?&s=1 - Das & stört doch nicht, oder sollte ich besser prüfen ob SID existiert und dann eben die URL so angeben: www.url.com?s=1
Falls es sonst noch was bei Sessions mit PHP zu beachten gibt, bin ich für Infos dankbar.
Liebe Grüße
Thomas
Hello,
wie Johannes schon sagte: PHP kümmert sich bei Formularen, Links etc. automatisch um das Anhängen der SID, sofern es richtig konfiguriert ist. Spar dir die Mühe zu filtern ob und wann und wo, es ist überflüssige Arbeit.
MfG
Rouven
Naja das Problem ist nur, dass ich auf die PHP-Konfiguration keinen Zugriff/Einfluss habe und deshalb die Frage wie es am klügsten zu machen ist.
Liebe Grüße
Thomas
Hi,
Ich habe es jetzt so gelöst, dass ich immer die Konstante SID in diesem Format www.url.com?SID&s=1 anhänge, egal ob ein Cookie gesetzt wurde oder nicht. Falls eines gesetzt wurde ist SID ja leer und die URL würde so aussehen www.url.com?&s=1 - Das & stört doch nicht
ich würde SID dennoch ans Ende setzen. Dein Problem ist, dass die Session-Automatik nur in HTML-Code funktioniert, weshalb ja für PHP-Ausgaben die Konstante SID zur Verfügung steht - und diese kann man auch wie Variablen abfragen... Leerstring -> Nicht notwendig.
freundliche Grüße
Ingo
Lieber Thomas,
wenn der Browser Cookies akzeptiert, dann wird die Konstante SID nicht befüllt, jedenfalls zeigen meine URLs in einem solchen Fall keine SessionID an. Das kann PHP offensichtlich automatisch.
Liebe Grüße aus Ellwangen,
Felix Riesterer.