fabian: session-problem, bitte um hilfe!

hallo leute!

Ich habe ein Problem mit meiner Session.

Und zwar: nach dem login, wenn alle daten korrekt sind und mit denen in der datenbank übereinstimmen, wird eine session gestartet, drei session-variablen definiert.

danach, wenn ich weiternavigiere, als "eingeloggter user" geht mir die session aber verloren, das heißt wenn ich zb nach einem reload der seite wiederum session_start() aufrufe und meine session-variablen abfragen will geht das nicht da ich plötzlich eine neue session-id bekomme das heißt die session wird neu initialisiert.

warum?

ich bekomme den fehler einfach nicht weg, hab schon alles probiert.

bitte helft mir ,ich wäre sehr sehr dankbar!

freundliche grüße
fabian

  1. Moin!

    Und zwar: nach dem login, wenn alle daten korrekt sind und mit denen in der datenbank übereinstimmen, wird eine session gestartet, drei session-variablen definiert.

    Warum wird die Session erst dann gestartet?

    Starte eine Session grundsätzlich sofort. Denn das beschreibt die Realität doch bestens: Ein Besucher geht auf deine Seite und liest dort Seiten.

    Irgendwann einmal entschließt er sich, sich einzuloggen. Das wird in der Session dann registriert, und schon kriegt er erweiterte Rechte.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. ..du hast recht....

      ist eine überlegung wert! danke!

      würd mich trotzdem interessieren warum die session neu initialisiert wird und nicht die alte fortgeführt...

      1. Moin!

        würd mich trotzdem interessieren warum die session neu initialisiert wird und nicht die alte fortgeführt...

        Du schreibst "Reload". Meinst du damit das Klicken auf den Reloadbutton? Wenn nein, dann ist es kein Reload, sondern eine neue Seite. Sollte es zumindest sein.

        Und dann bleibt da noch die Frage, ob das Session-Cookie gesetzt und vom Browser akzeptiert wird, und ob die Session-ID auch in alle URLs und Formularelemente integriert wird. Hast du das geprüft? Was kommt raus?

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Du schreibst "Reload". Meinst du damit das Klicken auf den Reloadbutton? Wenn nein, dann ist es kein Reload, sondern eine neue Seite. Sollte es zumindest sein.

          nein ich meine keine neue seite, sondern, wie du in meinem neuen beitrag nachlesen kannst, das neuladen der aktuellen seite. ist gleichzusetzen mit einem klick auf den reload-button, ja.

          Und dann bleibt da noch die Frage, ob das Session-Cookie gesetzt und vom Browser akzeptiert wird, und ob die Session-ID auch in alle URLs und Formularelemente integriert wird. Hast du das geprüft? Was kommt raus?

          das habe ich jetzt in meinem neuen beitrag auch angeführt,ja ich habe das in einem externen skript überprüft und es funktioniert alles einwandfrei. nur bei dieser einen seite bekomme ich jedesmal wenn die seite neu geladen wird eine neue session-id, somit wird die session nicht fortgeführt sondern neu initialiesiert.

          danke für deine hilfe

          1. Moin!

            Und dann bleibt da noch die Frage, ob das Session-Cookie gesetzt und vom Browser akzeptiert wird, und ob die Session-ID auch in alle URLs und Formularelemente integriert wird. Hast du das geprüft? Was kommt raus?

            das habe ich jetzt in meinem neuen beitrag auch angeführt,ja ich habe das in einem externen skript überprüft und es funktioniert alles einwandfrei. nur bei dieser einen seite bekomme ich jedesmal wenn die seite neu geladen wird eine neue session-id, somit wird die session nicht fortgeführt sondern neu initialiesiert.

            Deine bisherige Problembeschreibung deutet auf keines der typischen Fehlerbilder.

            Da bleibt jetzt nur, dass du eine URL angibst, bei der man sich das Problem live ansehen kann, und ggf. auch den relevanten Code.

            - Sven Rautenberg

            --
            "Love your nation - respect the others."
            1. Deine bisherige Problembeschreibung deutet auf keines der typischen Fehlerbilder.

              Das weiß ich. wir haben auch schon alles probiert und versucht, es ist absolut nicht verständlich warum dieses problem auftritt. zum verzweifeln also :P

              Da bleibt jetzt nur, dass du eine URL angibst, bei der man sich das Problem live ansehen kann, und ggf. auch den relevanten Code.

              ich kann dir leider keine url angeben das es sich um ein kommerzielles projekt handelt welches noch nicht gelauncht worden ist. der gesamte code wäre zu umfangreich und es ist mr eben auch aus diesem grund nicht möglich diesen hier zu posten. einen auszug habe ich glaube ich schon weiter oben gepostet.

              danke für deine hilfe

              1. Moin!

                ich kann dir leider keine url angeben das es sich um ein kommerzielles projekt handelt welches noch nicht gelauncht worden ist. der gesamte code wäre zu umfangreich und es ist mr eben auch aus diesem grund nicht möglich diesen hier zu posten. einen auszug habe ich glaube ich schon weiter oben gepostet.

                Dann kann ich dir so nicht helfen.

                Kauft euch einen Experten, der das Problem für euch löst. Bei kommerziellen Projekten sollte Geld ja nicht unbedingt das Problem sein.

                - Sven Rautenberg

                --
                "Love your nation - respect the others."
                1. haha, ICH bin der experte ;))

                  ich habe das problem jetzt gefunden und behoben, so etwas lächerliches hab ich noch NIE erlebt! der fehler war:
                  EINE leerzeile bevor das einleitende skript-tag begonnen wurde!!!
                  unglaublich :P

                  danke an alle und ganz besonders dir sven für die umfassende hilfe

                  1. Hallo fabian,

                    ich habe das problem jetzt gefunden und behoben, so etwas lächerliches hab ich noch NIE erlebt! der fehler war:
                    EINE leerzeile bevor das einleitende skript-tag begonnen wurde!!!

                    Hast du keine Fehlermeldung à la »Headers already sent« bekommen? Du hast doch alle Fehlermeldungen inklusive E_NOTICE aktiviert?

                    Schöne Grüße,

                    Johannes

                    1. Hast du keine Fehlermeldung à la »Headers already sent« bekommen? Du hast doch alle Fehlermeldungen inklusive E_NOTICE aktiviert?

                      nein fehler werden keine ausgegeben. ich habe das skript übernommen und bin noch nicht lange in der firma. wäre aber sicher empfehlenswert eine sinnvolle fehlerausgabe zu bekommen. danke

                      andere frage, um diesen beitrag jetzt als beantwortet zu makieren muss ich auf den originalbeitrag mit 'Danke' antworten, hab ich das richtig verstanden?

                      1. Hallo fabian,

                        nein fehler werden keine ausgegeben. ich habe das skript übernommen und bin noch nicht lange in der firma. wäre aber sicher empfehlenswert eine sinnvolle fehlerausgabe zu bekommen. danke

                        Und dann stellst du Fragen, bevor du das aktiviert hast? ;-)
                        Ein Entwicklungsserver sollte immer so konfiguriert sein, dass er _alle_ Meldungen ausgibt. Sonst kannst du ja viele Fehler gar nicht erkennen.

                        andere frage, um diesen beitrag jetzt als beantwortet zu makieren muss ich auf den originalbeitrag mit 'Danke' antworten, hab ich das richtig verstanden?

                        Eine wirkliche als-beantwortet-markieren-Funktion gibt es hier nicht. Bei ausgedehnten Subthreads wäre es auch häufig nicht sinnvoll, den gesamten Thread zu "schließen".

                        Es ist nur immer schön, wenn vom Fragesteller eine Rückmeldung kommt, damit man weiß, ob man helfen konnte. Und wenn diese Antwort dann einen Titel wie »Danke - Problem gelöst« hat, weiß jeder, der sich den Thread anguckt sofort, dass das Problem nicht mehr akut ist.

                        Schöne Grüße,

                        Johannes

  2. Anhang:

    -----------------------------------------
    --------login.php------------------------
    -----------------------------------------

    #############################

    session beginn

    session_start();

    $_SESSION["user_id"]=$user_id;
    $_SESSION["email"]=$email;
    $_SESSION["username"]=$username;

    //diese variablen werden alle einwandfrei gesetzt

    -----------------------------------------
    -----nach dem reload der seite-----------
    -----------------------------------------

    //abfrage ob eingeloggt --> überprüfung
     session_start();

    $ses_enc=session_encode();
     echo "<br><br>"
         ."######### SESSION DATEN ############<br><br>"
         ."Session-ID: <b>".SID."</b><br>"
         ."_user-id: <b>".$_SESSION["user_id"]."</b><br>"
         ."_email: <b>".$_SESSION["email"]."</b><br>"
         ."_username: <b>".$_SESSION["username"]."</b><br>"
         ."_sessionencode: <b>".$ses_enc."</b><br>";

    if (isset($_SESSION["user_id"])) {

    $user_id=$_SESSION["user_id"];

    print (".......");

    -----------------------------------------
    ---- und da bekomme ich jetzt plötzlich eine neue
    ---- session id und die alten variablen sind natürlich
    ---- weg. aber warum?
    ---- session_start() sollte doch die alte session wieder
    ---- aufrufen sofern sie nicht destroyt wird und das wird
    ---- sie nicht. warum initialisiert mir das skript da eine
    ---- neue session und ruft nicht die alte wieder auf????
    -----------------------------------------

  3. So:

    ich habe ein problem und zwar habe ich EINE seite die immer neu geladen wird und deren inhalt sich nur durch includes ändert. das heißt der größte teil der seite bleibt immer gleich, je nachdem welchen link man klickt wird die seite neu aufgerufen und eine andere seite an bestimmter stelle eingebunden.

    OK. nun möchte ich, sobald die hauptseite das erste mal geladen wird, eine session starten und auf den jeweiligen eingebundenen seiten bei bestimmten aktionen verschiedene session-variablen setzen.

    leider habe ich das problem das die session anscheinend immer neu gestart wird bei jedem aufruf, da ich jedesmal wenn die seite neu geladen wird eine neue session-id bekomme. warum?

    die funktion session_start() sollte doch beim ersten aufruf eine neue session initialisieren, bei jedem weiteren darauffolgenden aufruf die vorherige session weiterführen, da php die aktuelle session-id doch automatisch (im cookie) mitübergibt.

    ich habe die session-funktion in einem externen skript überprüft, da funktioniert es einwandfrei das die session-id automatisch übergeben wird. daran liegt es also nicht.

    nur bei dem einen (oben erwähnten) skript scheint php immer eine neu session zu starten. warum?

    vielen dank im vorraus für eure bemühungen

    freundliche grüße

    1. Moin!

      ich habe die session-funktion in einem externen skript überprüft, da funktioniert es einwandfrei das die session-id automatisch übergeben wird. daran liegt es also nicht.

      nur bei dem einen (oben erwähnten) skript scheint php immer eine neu session zu starten. warum?

      Ich kopiere gerne meine Fragen auch nochmal hier hin, wenn es dir besser gefällt:

      Und dann bleibt da noch die Frage, ob das Session-Cookie gesetzt und vom Browser akzeptiert wird, und ob die Session-ID auch in alle URLs und Formularelemente integriert wird. Hast du das geprüft? Was kommt raus?

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
  4. Danke - Problem gelöst!