Gerd: Sessionvariablen ändern ohne session_register möglich?

Hallo,

ich habe ein Script mit Login auf Session-Basis.
Nach dem Login werden mittels session_register unter anderem Benutzername und Passwort gespeichert.

Es gibt auch eine Benutzerverwaltung. Wenn ich damit Benutzer anlege, oder Daten von Ihnen ändere, verändern sich auch die Daten in der Session Datei.
Ich habe aber nirgends session_register stehen, außerdem schreibe ich auch nicht bewußt auf eine andere Art und Weise in das Superglobale $_Sessions Array, wenn dies überhaupt möglich ist.

Woran könnte das liegen, wie kann ich auf andere Art und Weise als mit session_register Variablen in der Session-Datei ändern? Finde den Fehler einfach nicht und wäre Dankbar für ein paar Tips wonach ich mal suchen könnte.
Mir ist klar, das ich ohne Quelltextangaben hier wohl kaum eine genaue Fehlerquelle angegeben bekommen kann, aber vielleicht gibt es ja bekannte Probleme in dem Bereich

Gruß

Gerd

  1. hi,

    Nach dem Login werden mittels session_register unter anderem Benutzername und Passwort gespeichert.

    session_register solltest du nicht mehr benutzen, siehe manual.

    Es gibt auch eine Benutzerverwaltung. Wenn ich damit Benutzer anlege, oder Daten von Ihnen ändere, verändern sich auch die Daten in der Session Datei.
    Ich habe aber nirgends session_register stehen, außerdem schreibe ich auch nicht bewußt auf eine andere Art und Weise in das Superglobale $_Sessions Array, wenn dies überhaupt möglich ist.

    es ist nicht nur möglich, sondern auch der zu bevorzugende weg. (btw: $_SESSION heißt das array.)

    Mir ist klar, das ich ohne Quelltextangaben hier wohl kaum eine genaue Fehlerquelle angegeben bekommen kann, aber vielleicht gibt es ja bekannte Probleme in dem Bereich

    nein, eigentlich weniger - aber die verwendung von session_register() und die zugriffsweise einfach über $_SESSION zu _vermischen_, könnte durchaus ein problemkandidat sein.

    gruß,
    wahsaga

    --
    I'll try being nicer if you'll try being smarter.
    1. Hallo,

      bekomme ich nicht dasselbe Ergebnis bei folgenden Befehlen?

      $variable1="huhu";
      session_register('variable1');

      und

      $_SESSION['variable1']="huhu";

      Ich kann doch auch auf $_SESSION zugreifen wenn ich session_register()  verwende.

      Gruß

      Gerd

      1. Moin!

        Ich kann doch auch auf $_SESSION zugreifen wenn ich session_register() verwende.

        Du sollst die beiden Zugriffsarten nicht mischen. Die PHP-Dokumentation rät davon eindeutig ab. Und sie rät eindeutig dazu, nur noch auf $_SESSION zuzugreifen.

        Du kannst dich dran halten und hast ein sorgenfreies Leben. Oder du kannst dich drüber hinwegsetzen, darfst dich dann aber über seltsame Probleme nicht wundern.

        Insbesondere bist du bei session_register() auch noch auf register_globals=on angewiesen - und das findest du bei immer weniger Providern, weil die dankenswerter Weise endlich auf den empfohlenen Standard off umschalten.

        - Sven Rautenberg

        1. Hallo,

          ich habe nun die Stelle gefunden in dem Die Variable in der Session überschrieben wird.
          Ich starte eine Datenbankabfrage, aus dem Ergebnisarray hole ich die Daten folgendermaßen.

          $mitarbeiter_name=$row['mitarbeiter_name'];

          Dadurch wird die Variable im Array ($_SESSION['mitarbeiter_name']) überschrieben.
          Wie kann sowas passieren?

          Gruß

          Gerd

          1. Hallo Gerd,

            $mitarbeiter_name=$row['mitarbeiter_name'];
            Dadurch wird die Variable im Array ($_SESSION['mitarbeiter_name']) überschrieben.
            Wie kann sowas passieren?

            ich tippe mal auf register_globals=on (ein echo $mitarbeiter_name; vor der Datenbankabfrage dürfte dir den Inhalt von $_SESSION['mitarbeiter_name'] ausgeben) - stell register_globals auf off, dann wird der Inhalt von $_SESSION (und $_GET, $_POST, ...) nicht mehr in Variablen "umgewandelt".

            Grüße aus Nürnberg
            Tobias

            --
            Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
            1. Hallo,

              ja eben $mitarbeiter_name überschreibt $_SESSION['mitarbeiter_name'].
              register globals kann ich zwar auf meinem Server ausschalten, doch leider nicht auf dem Webserver auf dem das Script später laufen soll.

              Eigentlich ist mir das noch nie passiert das einfach so eine Variable aus einem Superglobalen Array überschrieben wurde. Kann doch eigentlich gar nicht sein.

              Gruß

              Gerd

              1. Moin!

                Eigentlich ist mir das noch nie passiert das einfach so eine Variable aus einem Superglobalen Array überschrieben wurde. Kann doch eigentlich gar nicht sein.

                Wenn du session_register und $_SESSION mixt, dann kann alles sein.

                Und wenn du session_register entfernt hast, dann stören wohl noch die alten Session-Daten. Cookie oder die Session-Datei im konfigurierten Temp-Verzeichnis löschen könnte helfen.

                - Sven Rautenberg

                1. Hi

                  mit register_globals tritt der Fehler zwar nicht auf, aber mich wundert es das einfach in das Array $_SESSION geschrieben wird.

                  Gelöscht habe ich natürlich die Session immer wieder anchdem der Fehler auftauchte, habe die Sessiondatei auch immer zum Test im Editor geöffnet.

                  Gruß

                  Gerd