Login-System wechselt Session

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

  • Login-System wechselt Session

    Hi!
    Ich habe ein kleines Login-System streng nach diesem Tutorialhttp://www.php-resource.de/tutorials/read/33/1/ eingerichtet.
    Es basiert auf einer MySQL Tabelle mit den Benutzerinfos und das Login-Skript legt bei der Anmeldung eine Session an. Die zwei "geheimen" Seiten verweisen auf das Login- Skript wenn man noch angemeldet ist.
    Das funktioniert alles wunderbar!

    ABER:
    Ich möchte auf einer anderen Seite den Benutzernamen anzeigen, wenn der Besucher angemeldet ist. (Auf dieser Seite wird auch eine MySQL Abfrage ausgeführt.) Auch das geht, aber bei wechseln auf diese Seite, wird irgendwie der angemeldete Benutzer in der Session gegen den Standarduser der MySQL Datenbank (der die Abfrage auf dieser Seite ausführt) asugetauscht. Ich habe keine Ahnung, warum das passiert, aber ich möchte das natürlich vermeiden.
    Auf den "geheimen" Seiten wird der richtige User angezeigt.

    Den Benutzernamen lasse ich so anzeigen:
    Am Anfang der Datei:
    PHP-Code:
    <?php session_start(); /* Hier wird noch die Datei zur Verbindung mit der DB eingebunden*/ ?>
    Und dann im Body:
    PHP-Code:
    <?php if(!session_is_registered('user') || $_SESSION['user'] == "") {  echo("<br>");}  
    else {echo (
    "Sie sind als".$_SESSION['user']." angemeldet");} ?>
    Weiss jemand, was man da machen kann oder ob/wie es da einen Workaround gibt?

    Thanx!
    Basti

  • #2
    Ersetze mal deinen unteren Code durch den hier:
    PHP-Code:
    //Username des eingeloggten Users abfragen
    $sqlmysql_query("SELECT username FROM users WHERE usersession='".session_id()."'LIMIT 1");
    $row mysql_fetch_row($sql);
    // Username zuweisen
    $usname $row[0];
    //Username ausgeben
    echo "[ Herzlich Willkommen <b>$usname</b> ]"
    So funktionierts es.

    Wenn du $_SESSION['user'] benutzt erhälst du den DB-Owner und nicht den angemeldeten Nutzer.

    Dein Login-System wechselt nicht die Session, du fragst nur die falsche ab.
    Zuletzt geändert von XGremliN; 09.12.2003, 06:11.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Vielen Dank! Aber jetzt hänge ich an einer anderen Stelle: Seither hatte ich die Session ID bei der Anmeldung nicht in die DB reingeschrieben. Ich habe versucht, eine Abfrage zu schreiben, die jedesmal die Session ID in den Datensatz des entsprechenden Users schreibt (sonst nichts) aber mein SQL Query hat einen Fehler und ich komme nicht drauf:
      PHP-Code:
      SQL:
      INSERT INTO db.berechtigungen AS b VALUES ('','','','','','','". $usersession ."'WHERE b.user='".$user."' 
      Meine Tabelle "berechtigungen" hat 7 Felder, Nr.2 ist "user", Nr. 7 ist "session"; außerdem:
      PHP-Code:
       $user $result['user'];
      session_register('user');
      $usersession=session_id(); 
      Was mache ich da falsch?

      Kommentar


      • #4
        Hiermit ('','','','','','','". $usersession ."') versuchst du 7 Werte in das Feld user zu schreiben, dass geht nicht.
        Ersetz das mal durch ('". $usersession ."'). Dann sollte es funktionieren.
        it's not a bug,
        it's a feature!

        Kommentar


        • #5
          schmeiss auch mal das session_register() komplett raus.

          das ist veraltet und wird nicht mehr benötigt.

          hier kannst du mehr dazu lesen.
          http://de.php.net/manual/de/ref.session.php
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Mein Problem war, dass man mit "INSERT INTO..." keinen bestehenden Datensatz in einer MySQL Tabelle aktualisieren kann, sondern "UPDATE" braucht. Jetzt hab ichs raus.

            Ich habe jetzt allerdings noch einen anderen Bug gefunden, steige aber noch nicht ganz durch. Wenn Ihr Pech habt, poste ich hier nochmal...

            Vielen Dank soweit.
            Basti

            Kommentar

            Lädt...
            X