markusp: session id mitt www bzw ohne

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!!!

  1. 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

    --
    Gott hilft niemandem, er erfreut sich nur an unseren Leiden.
      (Ashura)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. 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

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. 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

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    1. 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

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
      1. 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

        1. 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

          --
          RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    2. 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