session id mitt www bzw ohne
markusp
- php
1 Der Martin0 Tom0 hotti
hallo,
ich habe auf meiner seite ein login system mit sesssion id.
also beim einloggen wird eine session id erstellt, die dann bei jedem seitenaufruf abgefragt wird, und überprüft wird, ob man wirklich eingeloggt ist oder nicht.
Dabei gibt es jedoch ein problem, wenn ich jz meine adresse mit www. eingebe und mich einlogge, kann ich alles problemlos nutzen. mache ich zb die seite zu, und rufe sie erneut auf (wieder mit www.) dann bin ich noch eingeloggt.
wenn ich aber die seite ohne www. eingebe, bin ich nicht eingeloggt, schreibe ich das www. wieder dazu schon...
weiß irgendwer woran es liegen könnte? :/
für hilfe sage ich schon jetzt danke!!!
Hi,
wenn ich aber die seite ohne www. eingebe, bin ich nicht eingeloggt, schreibe ich das www. wieder dazu schon...
weiß irgendwer woran es liegen könnte? :/
es liegt daran, dass PHP die Session ID gewöhnlich in einem Cookie speichert - und Cookies werden domainspezifisch verwaltet. Und ja, example.org und www.example.org sind nun mal verschiedene Domains.
Das ist übrigens einer der vielen Gründe, warum man vielleicht beide URL-Varianten unterstützen, aber auf jeden Fall eine konsequent bevorzugen sollte.
Ciao,
Martin
Hello,
ich habe auf meiner seite ein login system mit sesssion id.
also beim einloggen wird eine session id erstellt, die dann bei jedem seitenaufruf abgefragt wird, und überprüft wird, ob man wirklich eingeloggt ist oder nicht.
Dabei gibt es jedoch ein problem, wenn ich jz meine adresse mit www. eingebe und mich einlogge, kann ich alles problemlos nutzen. mache ich zb die seite zu, und rufe sie erneut auf (wieder mit www.) dann bin ich noch eingeloggt.
wenn ich aber die seite ohne www. eingebe, bin ich nicht eingeloggt, schreibe ich das www. wieder dazu schon...
weiß irgendwer woran es liegen könnte? :/
Die Domains www.example.org und example.org sind zwei vollkommen unterschiedliche. Der Browser verwaltet sie daher auch als zwei unterschiedliche für die Mitsendung von Cookies oder von Basic-Authentication-Merkmalen.
Da hilft dann nur eine permanente Umleitung auf dem Server. Wenn jemand nur example.org aufruft, wird er auf www.eaxmple.org umgeleitet. Dabei musst Du dann aber auch den Querystring wieder mitgeben.
So reicht es dann, eine Authentifizierung für www.example.org zu bauen, denn dort landet der User ja sowieso immer.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
hi,
falls die Session über einen Cookie gehalten wird, kannst Du mit dem Attribut
domain='.example.com';
festlegen, dass Browser den Cookie auch an die Subdomains like 'www' senden.
Hotti
Hi,
falls die Session über einen Cookie gehalten wird, kannst Du mit dem Attribut
domain='.example.com';
festlegen, dass Browser den Cookie auch an die Subdomains like 'www' senden.
Korrekt.
Bei Nutzung des Default-Sessionmechanismus von PHP setzt man den Cookie aber idR. nicht selber, sondern das macht PHP automatisch.
Die Stelle, an der man die Domain dieses Cookies beeinflussen kann, ist dann die Einstellung session.cookie_domain
MfG ChrisB
Hi,
Korrekt.
Danke ;)
Die Stelle, an der man die Domain dieses Cookies beeinflussen kann, ist dann die Einstellung session.cookie_domain
Geht mich nüschd an, aber schön dass es möglich ist und danke für den Link.
Hotti
Hi,
Geht mich nüschd an, aber schön dass es möglich ist und danke für den Link.
War auch eher als ergänzende Information für den Frager gedacht ;-)
MfG ChrisB
Moin!
falls die Session über einen Cookie gehalten wird, kannst Du mit dem Attribut
domain='.example.com';
festlegen, dass Browser den Cookie auch an die Subdomains like 'www' senden.
Ist richtig, erfordert aber halt einen Punkt vor "example.com" - der fehlt bei "example.com" aber, es funktioniert so also nur für beliebige Subdomains, aber nicht OHNE Subdomain. Wildcards werden von den Browsern bei Cookies nicht sehr freizügig akzeptiert, es muss MINDESTENS eine Second-Level-Domain angegeben sein, für die diversen .co.xy-Domainkonstrukte haben Browser auch noch eine Blacklist, die für diese Fälle die Third-Level-Domain erfordern (wäre ja auch blöd, wenn man mit einem Cookie für ".co.uk" ein Mastercookie für die gesamte britische Webwelt setzen könnte).
Damit es für beide Fälle funktioniert, muss man ZWEI Cookies setzen, für beide Domainfälle. Das wiederum kriegt PHP mit seinen normalen Session-Funktionen nicht hin.
- Sven Rautenberg