Daniel Stankewitz: PHP-Session sendet keine cookies

Hallo,

ich arbeite seit mehr als 5 jahren mit php und stehe vor einem problem an dem ich derzeit verzweifel. das session_start() von PHP sendet keine cookies mehr obwohl es laut phpinfo() so sein sollte. manuell kann ich mit setcookie() noch cookies senden, allerdings sendet session_start() von sich aus keines mehr.

es lief alles noch vor kurzem bis ich einige änderungen an meiner session-klasse gemacht für den fall das cookies deaktiviert sind. danach kamen keine cookies mehr. selbst als ich alles rückgängig gemacht habe funktionierte es nicht mehr. sowohl mit dem IE als auch mit dem Mozilla klappt es nicht. und das merkwärdigste... an einer anderen website (auf einem anderem vhost) auf dem server(apache/linux) ist das gleiche problem obwohl ich dort nichts geändert habe.

hat jemand eine idee?
Wäre wirklich dankbar!

Ciao,
Daniel

  1. Hallo,
    hast du an deinem Script rumgespielt?
    Und du weißt, das Session Cookies auf dem Server gespeichert werden?

    Also session.save_path muss es geben und session.use_cookies muss auf on stehn?

    Und wie äußert sich, das er keine Cookies sendet?

    Wenn an der URL ?PHPSESSID=... ist, heißt das nicht unbedingt, das er keine Cookies benutzt. Denn das macht er meistens auch dann, wenn du die Site besuchsts, wenn er noch keinen Session Cookies gesetzt hat

    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    1. Hi,

      Und du weißt, das Session Cookies auf dem Server gespeichert werden?

      Cookies werden auf dem Client gespeichert.
      Die session daten aber auch auf dem server.

      Also session.save_path muss es geben und session.use_cookies muss auf on stehn?

      session.save_path     /home/www/web1/html/fanwork.org/_sessions/ /tmpsession.use_cookies   On     On

      Und wie äußert sich, das er keine Cookies sendet?

      es kommen am browser keine cookies an (ich habe eingestellt das man jedes cookie bestätigen soll... aber es erscheint kein popup zur bestätigung) .. wenn ich den browser schliesse und wieder öffne ist die alte session nicht mehr da..

      Wenn an der URL ?PHPSESSID=... ist, heißt das nicht unbedingt, das er keine Cookies benutzt. Denn das macht er meistens auch dann, wenn du die Site besuchsts, wenn er noch keinen Session Cookies gesetzt hat

      Wenn ich aber einige links durchklicke verschwindet PHPSESSID  nicht.

      Ciao,
      Daniel

      1. Hello,

        Und wie äußert sich, das er keine Cookies sendet?
        es kommen am browser keine cookies an (ich habe eingestellt das man jedes cookie bestätigen soll... aber es erscheint kein popup zur bestätigung) .. wenn ich den browser schliesse und wieder öffne ist die alte session nicht mehr da..

        Die Browser unterscheiden (sowrit ich si kenne) zwischen Cookies, die auf der Platte landen sollen und solchen, die nur für die Dauer der Browserinstanz und ihrer Kinder (also im Allgemeinen auf der Serverseite auch der Session) leben sollen. Hast Du Deinen Browser für beide Arten auf "redselig" eingestellt?

        Und dann sollte man session.use_cookies auf "1" haben und der Pfad sollte stimmen. Sollte es sich um einen Server im Testumfeld handeln, für den sich kein DNS zuständig fühlt, solltest Du für "domain" im Cookie lieber die IP des Servers eingeben und der Webserver sollte der Primary-Web-Server sein und kein virtual!

        Dann klappts (wahrscheinlich) auch mit den Cookies.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. Hi,

          Die Browser unterscheiden (sowrit ich si kenne) zwischen Cookies, die auf der Platte landen sollen und solchen, die nur für die Dauer der Browserinstanz und ihrer Kinder (also im Allgemeinen auf der Serverseite auch der Session) leben sollen. Hast Du Deinen Browser für beide Arten auf "redselig" eingestellt?

          Mit anderen Websites klappt es. Sowohl mit dem Mozilla als auch mit dem IE (mit div. einstellungen).

          Und dann sollte man session.use_cookies auf "1" haben und der Pfad sollte stimmen. Sollte es sich um einen Server im Testumfeld handeln, für den sich kein DNS zuständig fühlt, solltest Du für "domain" im Cookie lieber die IP des Servers eingeben und der Webserver sollte der Primary-Web-Server sein und kein virtual!

          der server hat dns einträge, use_cookies ist auf 1...

          Ich bin echt am rätseln...
          es hat früher auch alles funktioniert...
          ich denke das es nicht am browser liegt...
          und an der einen website habe ich auch nichts an den skripten geändert...
          kann irgendwas an der servereinstellung (php.ini) nicht mehr stimmen?

          ciao,
          daniel

          1. Hello,

            Ich bin echt am rätseln...
            es hat früher auch alles funktioniert...
            ich denke das es nicht am browser liegt...
            und an der einen website habe ich auch nichts an den skripten geändert...
            kann irgendwas an der servereinstellung (php.ini) nicht mehr stimmen?

            Klar kann das sein...

            session.cookie_domain
            session.cookie_path
            (session.cookie_secure)
            session.use_cookies
            session.use_only_cookies
            session.use_trans_sid

            Diese Parameter beeinflussen alle das Cookie-Verhalten

            Außerdem empfehle ich noch die Funktion http://de2.php.net/manual/en/function.session-get-cookie-params.php, mit der dann wenigstens auf dem Server in das gesetzte Cookie der Session ( session_name() ) geschaut werden kann.

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            1. Hi,

              session.cookie_domain
              session.cookie_path
              (session.cookie_secure)
              session.use_cookies
              session.use_only_cookies
              session.use_trans_sid

              Ich konnte das problem grade einkreisen:
              session_set_cookie_params(time() + 2592000, '/', 'fanwork.org', false);

              Scheinbar funktionieren die cookies nicht mehr wenn ich die cookie_liftime auf einen anderen wert als 0 (time() + 2592000) setze. Wenn ich dies wieder auf 0 setze funktioniert alles. Ich würde nur gerne meine "Immer eingeloggt bleiben" funktionalität behalten.

              ciao,
              daniel

              1. Moin!

                Ich konnte das problem grade einkreisen:
                session_set_cookie_params(time() + 2592000, '/', 'fanwork.org', false);

                Scheinbar funktionieren die cookies nicht mehr wenn ich die cookie_liftime auf einen anderen wert als 0 (time() + 2592000) setze. Wenn ich dies wieder auf 0 setze funktioniert alles. Ich würde nur gerne meine "Immer eingeloggt bleiben" funktionalität behalten.

                Das regelst du aber bitte nicht per Session-Cookie (bzw. dauerhaftem Session-Cookie) - weil der Server irgendwann mal sämtliche gespeicherten Session-Daten aufräumt (und das ist auch sehr wichtig so), sind die über dich gespeicherten Session-Daten irgendwann weg. Dann mußt du dich sowieso neu einloggen.

                Wenn du dich automatisch einloggen willst, dann setzte Username und Passwort in separate, dauernhafte Cookies.

                Und wenn dein Login-Bereich schlau konzipiert ist, dann funktioniert das alles problemlos: Die angeforderte Seite des geschützten Bereichs prüft in deiner Session, ob du eingeloggt bist. Das bist du nicht, also wirst du zum Login-Skript weitergeleitet. Dieses Skript prüft, ob du Login-Cookies hast, prüft das Passwort und loggt dich ein, und leitet dich dann zur Seite zurück, die du zuerst angefordert hast. Alternativ gibst du deine Benutzerdaten über ein Formular ein und kommst dann ebenfalls dorthin.

                Dich könnte stören, dass Benutzername und Passwort unverschlüsselt übertragen werden. Dann benutze SSL. Eine andere Möglichkeit gibt es da nicht.

                - Sven Rautenberg

                --
                Die SelfHTML-Developer sagen Dankeschön für aktuell 21335,05 Euro Spendengelder!