Jens: Warum müssen für PHP-Session Cookies aktiviert sein ?

Hallo,

ich habe ein Loginsystem mit PHP-Sessions.
Wenn mein Browser Cookies deaktiviert hat, komme ich nicht auf die Seite.
Ich dachte immer das die Cookies die man abstellen kann Clientseitig sind.
Da PHP-Sessions auf dem Server gespeichert werden verstehe ich nicht warum ich ohne Cookies zu aktivieren die Seite nicht betreten kann.
Bringt irgendwer Licht ins Dunkel ?

mfg

Jens

  1. Hi,

    Wenn mein Browser Cookies deaktiviert hat, komme ich nicht auf die Seite.
    Ich dachte immer das die Cookies die man abstellen kann Clientseitig sind.

    Jein.
    Ein Cookie wird vom Browser lokal gespeichert.
    Und bei jedem http-Request auf den Server, der den Cookie geschickt hat, wird der Cookie wieder an den Server geschickt.

    Da PHP-Sessions auf dem Server gespeichert werden verstehe ich nicht warum ich ohne Cookies zu aktivieren die Seite nicht betreten kann.
    Bringt irgendwer Licht ins Dunkel?

    Ja, der ORF - jedes Jahr gibt es eine Spendenaktion unter diesem Namen... ;-)

    Normalerweise funktionieren PHP-Sessions auch ohne Cookies - dann wird die Session-Id in der URL mitgeführt...

    Probleme gibt es höchstens, wenn Du zu Beginn der Session Cookies akzeptierst - dann wird die Session-Id nicht in die URL geschrieben - und dann Cookies abschaltest. Jetzt hat der Server keine Möglichkeit mehr, die Session wiederzuerkennen - in der URL steht sie nicht, und den Cookie kriegt er auch nicht mehr.

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. Hallo

      Normalerweise funktionieren PHP-Sessions auch ohne Cookies - dann wird die Session-Id in der URL mitgeführt...

      Hm aber warum klappt das bei mir nicht.
      Hier die Infos aus phpinfo():

      Directive Local Value Master Value
      session.auto_start Off Off
      session.bug_compat_42 On On
      session.bug_compat_warn On On
      session.cache_expire 180 180
      session.cache_limiter nocache nocache
      session.cookie_domain no value no value
      session.cookie_lifetime 0 0
      session.cookie_path /xxx/xxx /xxx/xxx
      session.cookie_secure Off Off
      session.entropy_file no value no value
      session.entropy_length 0 0
      session.gc_dividend 100 100
      session.gc_maxlifetime 1440 1440
      session.gc_probability 1 1
      session.name XXXXXXX XXXXXXXX
      session.referer_check no value no value
      session.save_handler files files
      session.save_path /xxx/xxx /xxx/xxx
      session.serialize_handler php php
      session.use_cookies On On
      session.use_only_cookies Off Off
      session.use_trans_sid On On

      1. Hallo, dann muesstest Du die session-id aber
        als Variable in der URL mitfuehren:
        Z.B. http://www.beispieldomain.de/index.html?sessionid=XXXX
        und fuer XXXX muesste dann die ID eingesetzt werden.
        Gruss Bill the shoe

        1. Hi,

          also muß ich an jeden link per Hand die Sessionid noch dranhängen dann gehts ?

          mfg

          Jens

          1. Hi,

            also muß ich an jeden link per Hand die Sessionid noch dranhängen dann gehts ?

            mfg

            Jens

            Hi,
            nicht ganz: Das XXXX musst Du durch den Variablennamen (z.B. $sessionid) ersetzen.
            Bill the shoe

          2. Servus,

            also muß ich an jeden link per Hand die Sessionid noch dranhängen dann gehts ?

            wenn Du die Möglichkeit hast, deine php.ini Datei zu konfigurieren,
            dann genügt es "session.use_cookies" auf "Off" zu setzen.

            Gruss

          3. Hallo Jens,

            nein, Du musst das nicht zu Fuß machen mit der Session-ID. Du hast ja Trans-SID eingeschaltet. Da würde dann beim ersten Aufruf einer Seite (Der Server merkt das daran, dass weder ein Cookie noch eine ID im Code mitkommt) automatisch die Session-ID an sämtliche Links angehängt und auch als Hidden-Variable in alle Formulare eingestanzt. PHP ist da wirklich mächtig.

            Sieht natürlich nicht schön aus. Ich steh inzwischen auf dem Standpunkt, wer auf seinem Client Cookies ausschaltet, der braucht auch nicht mitzumachen. *gg*

            Grüße

            Chris (C)

            1. Hallo

              nein, Du musst das nicht zu Fuß machen mit der Session-ID. Du hast ja Trans-SID eingeschaltet. Da würde dann beim ersten Aufruf einer Seite (Der Server merkt das daran, dass weder ein Cookie noch eine ID im Code mitkommt) automatisch die Session-ID an sämtliche Links angehängt und auch als Hidden-Variable in alle Formulare eingestanzt. PHP ist da wirklich mächtig.

              Hm also der hängt bei mir die sessionid nicht automatisch an die Links.
              Zugriff auf die PHP.ini habe ich leider auch nicht.

              mfg

              Jens

              1. Hallo,

                auch wenn ich die ID an den Link anhänge klappt es nicht.
                Ich kann die Seite einfach nicht betreten.
                mfg

                Jens

                1. Tag Jens,

                  "die Seite betreten können" bedeutet ja, einen Request auf die Seite auslösen zu können, die Seite durch den Parser zu jagen, der stellt mittels Code fest, dass er den User wiedererkennen kann und gibt dann den rest der Seite als Response zurück an den Client - right?

                  Wie lautet denn Dein Erkennungscode für den User?

                  Lass Die mal Testhalber alle Cookies ausgeben:

                  echo "<pre";
                  print_r($_COOKIE);
                  echo "</pre";

                  Dann weißt Du mehr. Das gleiche kannst Du dann noch mit den $_POST und den $_GET machen. Irgenswo sollte Deine Cookiesequenz drisnstehen und zwar mit dem Namen der Session, wie sie in der php.ini angelegt ist. Meistens ist das "PHPSESSID". Natürlich nur, wenn Du nicht die Funktion session_name() benutzt hast, bevor Du die Session gestartet hast.

                  Grüße

                  Chris (C)

                  1. Hallo,

                    habe einen Fehler gefunden, scheinbar wird eine Session wenn Cookies deaktiviert sind nicht automatisch in einen Header eingefügt. Manuell, also:
                    header("Location:bew/main.php?PHPSESSID=$PHPSESSID");
                    funktioniert es dann.
                    Auch in iFrames wird es nicht automatisch eingefügt, und in Javascriptlinks a la <a href="javascript:twoframes('asdasd.php','asdasd.php')"> wird trotz
                    session.use_trans_sid on wird die ID auch nicht automatisch eingefügt.
                    Kann das irgendwer bestätigen oder steckt bei mir sonst noch wo der Fehlerteufel ?
                    mfg

                    Jens

                    1. Hallo

                      Auch in iFrames wird es nicht automatisch eingefügt, und in Javascriptlinks a la <a href="javascript:twoframes('asdasd.php','asdasd.php')"> wird trotz
                      session.use_trans_sid on wird die ID auch nicht automatisch eingefügt.

                      Zu iframes kann ich nichts sagen, bei Javascript solltest du die Session-ID
                      händisch einfügen.
                      <a href="javascript:twoframes('asdasd.php?<?php echo "SESSIONID=".session_id()."','asdasd.php')">
                      (so ich jetzt den richtigen Frame erwischt haben sollte;-))

                      Tschö, Auge

                      1. Hallo

                        Herrje:
                        <a href="javascript:twoframes('asdasd.php?<?php echo "SESSIONID=".session_id(); ?>','asdasd.php')">

                        Wenn schon, dann mit: ..."; ?>" hinten drannen!

                        Tschö, Auge