Session-Variablen werden überschrieben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Session-Variablen werden überschrieben

    vorweg: ich arbeite mit sessions, deren id in cookies gespeichert wird und nicht immer übergeben wird.

    ich hab einen login programmiert, der, wenn sich der user anmeldet und die daten passen, die wichtigsten userdaten in session-variablen speichert. alles schön und gut, hat auch prima funktioniert.

    wenn ich jetzt aber (wenn der user angemeldet ist) (nur!) auf einen link klicke, z.B. auf die Userliste, in der ich von der Datenbank alle User auslese, und dort von mir aus die Variable $nickname gebrauche, dann überschreibt es mir auch gleichzeitig die $_SESSION['nickname'] mit dem letzten in $nickname eingelesenen Wert. wieso?

  • #2
    Ähm ..., ohne Code nix los

    Kommentar


    • #3
      code ist schwierig, da es ziemlich viel code ist. aber das problem hab ich inzwischen lösen können, jedoch ist es mir immer noch unverständlich wieso die variablen überschrieben wurden.

      trotzdem, um vielleicht jemanden in zukunft mit dem gleichen problem helfen zu können, hier der code:

      die registrierung der session-variablen (nur eine, als Beispiel):

      PHP-Code:
      $_SESSION["nickname6x04"] = $data["nickname"]; 
      (das 6x04 wurde von mir hinzugefügt um das problem zu lösen!)
      Diese Datei wird nur einmal! beim login aufgerufen.

      ein wenig code der aufgerufenen links:

      PHP-Code:
      $sqll "SELECT ".                     
                          
      "email, gender, geburtstag, wohnort "
                          
      "FROM "
                          
      "t_profil WHERE (profilid LIKE ".$userdata['userid'].");"
      $resultt mysql_query ($sqll);                 

      if (
      mysql_num_rows ($resultt) > 0
      $profildata mysql_fetch_array($resultt);
      ELSE ECHO die(
      "<tr><td>Keine Daten gefunden</td></tr>"); 

      $nickname $userdata['nickname'];
      $email $profildata['email'];
      $gender $profildata['gender'];
      $geburtstag $profildata['geburtstag'];
      $wohnort $profildata['wohnort']; 
      wie man erkennen kann schreibe ich hier in $nickname die aus der datenbank gelesene information, jedoch überschreibt diese operation nicht nur $nickname, sondern auch $_SESSION['nickname'], obwohl nirgends die entsprechende zuweisung erfolgt. Deshalb habe ich dem namen der session-variable jetzt das 6x04 angehängt, um dem (anscheinend) doppelten variablennamen vorzubeugen.

      danke trotzdem für die schnelle antwort.
      mfg
      lacrimae

      Kommentar


      • #4
        ich kann nur vermuten, dass du eine Referenz der Session-Variablen in die entsprechende Funktion übergibst um die Session-Variable beim Login mit den Daten aus der Db zu füllen.

        Kann es sein, dass du beim Funktionsaufruf auf der Aufruferseite das "&" vergessen hast ? dann wird nämlich nicht zurück-referenziert. Mit einem ähnlichen Problem hatte ich seinerzeit auch mal zu kämpfen.

        Beispiel:
        PHP-Code:
        // die Session-Variable
        $meineSessionVariable

        // die Funktion
        funktion UserLogin(&$sessionvar) {
            ... 
        BLABLABLA ... Daten aus der DB lesenetc ...
             
        // Session-Variable mit den Daten aus der DB füllen
             
        $sessionvar['username'] = $row['uname'];
             
        $sessionvar['uid'] = $row['ID_user'];
             
        $sessionvar['gid'] = $row['fk_gruppe'];
             ... 
        USW ....
        }

        // der Aufruf:
        // das & ist WICHTIG !
        $login UserLogin(&$meineSessionVariable);

        ... 
        asdf 
        guckst du hier: http://de3.php.net/manual/de/languag...rences.whatare


        Grüsse
        CB
        Hans Matthöfers Widerspruch zur Expertenerkenntnis: Künstliche Intelligenz ist besser als natürliche Dummheit.

        Kommentar

        Lädt...
        X