Wie kann ich den eingeloggten Benutzer anzeigen?

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

  • #16
    Original geschrieben von dju010
    Aber in Zukunft, schreibt mir doch bitte, wo ich was genau einbauen muss, sonst entstehen nur Missverständnisse.
    OffTopic:
    Endgültig der Zeitpunkt zum Verschieben nach Projekthilfe erreicht ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #17
      Jep, das ist mir so schon recht. Ich hatte diesen Teil des Forums so nicht gesehen. Sonst wäre das hier von Anfang an hier gewesen.
      Ich hoffe, dass wir so doch noch eine Lösung finden, die klappt.

      Kommentar


      • #18
        Also ich habe nochmals etwas geforscht und glaubte einen Lösungsansatz zu haben, leider klappt alles nur nicht so recht.
        Als erstes wollte ich mal $_SESSION['username']=$name; schon ganz am Ende der login.php registrieren um dann in meiner Hauptdatei wieder zuzugreifen. Klappt direkt so nicht, also dachte ich ich verwende die $sql Variable so wie in der Sessonhelpers Datei:
        PHP-Code:
        <?
        session_start();
        include 'sessionhelpers.inc.php';

        echo 'You are ';
        if (!logged_in())
            echo 'not ';
        echo 'logged-in.<p />';

        echo 'Hallo';
        echo " <a href=\"user.php".SID."\" target=\"Site".SID."\"
        >\n";

        function user_data($userid)
        {
            $sql="SELECT UserName
            FROM users
            WHERE UserID='".$userid."'
            LIMIT 1";
            $result= mysql_query($sql) or die(mysql_error());
            if ( mysql_num_rows($result)==1)
            {
                $uname=mysql_fetch_assoc($result);
                return $uname['UserName'];
             }
            else
                return false;
        }
            
        echo " " .$uname['UserName'] ;

        echo " </a>\n";


        echo '&nbsp(<font size="-1"><a href="logout.php" 

        target="_parent">Log out</a></font>)';
        ?>
        Also das klappt auch nicht.
        Hilfe! Ich verzweifle hier! Es kann ja nicht so schwer sein und mein gefühl sagt mir, dass es wohl nur ein kleinerer Fehler ist.

        Kommentar


        • #19
          Rufst du die Funktion auch irgendwo auf?
          Wahrheit ist unser kostbarster Besitz. Lasst uns sparsam mit ihr umgehen. Mark Twain

          Kommentar


          • #20
            Also ich habe nochmals daran gearbeitet. Das einzige was ich genau wissen muss ist:
            Wenn der Nutzer auf meiner Log-in Seite seinen Benuternamen eingibt, WIE und WO kann ich diesen zwischenspeichern? Dann kommt noch die Frage, wie ich dann das WHERE Formulieren muss (wo ich ja genau auf diese Variable zurückgreiffe).
            Dies ist DAS zentrale Problem und ich kapiers einfach nicht und wenn ich so arbeite, wie ich die php.net site verstehe, klappt es nicht (ich mach wohl einen Denkfehler!)
            Also antwortet BITTE auf diesen Post.

            So am Rande erwähnt:
            Ich habe mal eine, natürlich nicht verwendbare, Testversion verwendet, wo ich bei WHERE UserSession <> 0 gesetzt habe. Da schafft er es richtig zuzgreifen, solange halt nur jemand online ist.

            Kommentar


            • #21
              Du schreibst immer: "Das klappt nicht". Damit kann keiner was anfangen. Gibts es Fehlermeldungen? Oder sind die Variablen einfach leer? Was hast Du gemacht, um rauszufinden, warum die Variablen leer sind? Dafür gibts z.B. echo, var_dump und print_r. Lass Dir doch nicht alles aus der Nase ziehen.
              Ausserdem willst Du ja was lernen und nicht beim nächsten Problem wieder gleich das Forum fragen, oder?

              Probier mal
              PHP-Code:
              echo 'Benutzername:'.$name.'<br>';
              $_SESSION['username']=$name;
              print_r($SESSION); 
              an der Stelle, wo es Deiner Meinung sinnvoll ist, den Namen in der Session zu speichern.
              Kleiner Tipp: z.B. in der function check_user bei [PHP]if ( mysql_num_rows($result)==1)
              {
              $user=mysql_fetch_assoc($result);
              PHP-Code:
              echo 'Benutzername:'.$name.'<br>';
                      
              $_SESSION['username']=$name;
                      
              print_r($SESSION);
                      return 
              $user['UserID'];
                  } 
              Und wenn Du Dir jetzt die Ausgaben ansiehst, solltest Du auch rausfinden können
              1. Ob $name einen Wert hat
              2. Ob $_SESSION['username'] einen Wert hat.

              Wenn beides der Fall ist, sollte dann in Deinem Hauptskript auch
              bei
              PHP-Code:
              echo 'Hallo'.$_SESSION['username'].'<br>'
              was rauskommen.
              Zuletzt geändert von thommyk; 01.12.2005, 10:08.
              Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

              Kommentar


              • #22
                Tut mir leid, dass ich mich nicht immer ganz klar ausgedrückt hatte: Wie ich (leider wohl zu unrecht) angenommen habe, sollte mein Text beschreibend sein. Das Problem lag schlicht daran, dass die verwendeten Variablen nicht gefüllt waren.
                Danke thommyk!!
                Deine Anleitung ist genau so, wie ich mir das so vorgestellt hatte.
                Als ich das versucht hatte, fehlte immer mindestens das print_r($SESSION).
                Jetzt habe ich ja da nun diesen Namen, denn ich wunderbar anzeigen kann . Warum ich ihn allerdings per SELECT hohlen wollte, war, weil ich nun noch eine Seite möchte, wo der User seine Dateien ansehen kann und auch überarbeiten kann. Dazu sollte ich ja alle Daten aus der SQL Tabelle haben. Mein Problem ist jetzt nun:
                PHP-Code:
                $sql "SELECT UserMail
                FROM users
                WHERE UserName = "
                .$_SESSION['username']." ";
                $result mysql_query($sql)
                or die(
                mysql_error());
                $row mysql_fetch_assoc($result); 
                Dies ergibt folgenden Fehler:
                Unknown column 'test' in 'where clause'
                Wobei "test" der Benutzername zu schein seint.
                Ich nehme an, dass ich die Variable hier irgendwie anders einbauen muss, oder?

                Kommentar


                • #23
                  jau, und zwar mit '', weils ja ein STring ist
                  PHP-Code:
                  WHERE UserName '".$_SESSION['username']."' "; 
                  ausserdem, wenn Du ALLE Daten des user haben willst, nimm
                  PHP-Code:
                  SELECT FROM users 
                  Zuletzt geändert von thommyk; 01.12.2005, 10:06.
                  Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

                  Kommentar


                  • #24
                    Danke, aber es verwirrt mich immer wieder aufs neue, wenn ich sowohl " als auch ' hintereinander verwenden muss, obwohl es eigentlich logisch wäre.
                    So nun habe ich aber noch eine Frage:
                    Wenn ich nun aus solch einem SELECT Befehl diese Ausgabe habe:
                    $row['UserID']; wie kann ich diesen Wert nun verwenden, wenn ich bspw. die anderen Daten an dieser Stelle per UPDATE speichern möchte?
                    Das ganze sollte dann irgendiwe so aussehen (habe ich mir mal überlegt):
                    PHP-Code:
                    if(isset($_POST['submit']) AND "Save" == $_POST['submit']) {
                    if(!
                    preg_match('/^\w+$/'trim($_POST['UserName']))) {
                    echo 
                    '<p class="error">';
                    echo 
                    'Please use only signs that the database can handle';
                    echo 
                    '</p>';
                    } else {
                    $sql "UPDATE
                      users
                    SET
                    UserName = '"
                    .trim($_POST['UserName'])."',
                    UserMail = '"
                    .addslashes(trim($_POST['UserMail']))."'
                    WHERE
                    UserID = '
                    $ID' "
                    // Die $ID steht mal provisorisch hier für den Wert der $row['UserID']
                    mysql_query($sql) OR die(mysql_error());
                    echo 
                    '<p>';
                    echo 
                    'Your changes have been saved';
                    echo 
                    '</p>';
                    } } 
                    Weiter unten folgt dann noch das Eingabeformular, wo ich die Daten eingeben kann.
                    Ich bin mir eben nicht sicher, ob ich hier schon auf $row['UserID'] zurückgreifen kann, da ich die erst weiter unten im Dokument auswerte (oder macht das nichts?)

                    Kommentar


                    • #25
                      Sieht so eigentlich ganz vernünftig aus. Auf Datenbank-Werte kannst du natürlich nur nach etwas SELECT-artigen zugreifen.

                      Wegen den ' " etc.: Du musst dir mal vorstellen, wie das aussieht, wenn PHP die Sachen geparst hat. SQL erwartet einen Syntax wie
                      "... WHERE spalte='wert' "
                      wenn du jetzt für wert einfach $row['spalte'] einsetzen würdest, würden sich die Strings "überschneiden", mit einem Syntaxhighlighter sieht man das sehr gut, kann ich dir nur empfehlen. Der String geht von ' bis ' , das ergäbe was wie
                      "... WHERE spalte='$row[' ..."
                      Damit das nicht passiert, musst du halt das SQL-Statement mit dem .-Operator zusammensetzen.

                      Ich hoffe, ich hab das irgendwie verständlich hingekriegt.
                      Wenn du dir das so nicht vorstellen kannst, nimm dir nen Syntaxhighlighter, da gibts gute Open source / Freeware-Editoren im Internet.
                      Ansonsten: probieren, probieren, oder auf neudeutsch: trial and error. Irgendwann geht das
                      Wahrheit ist unser kostbarster Besitz. Lasst uns sparsam mit ihr umgehen. Mark Twain

                      Kommentar


                      • #26
                        Danke für deine Hilfe.
                        Also ich habe hier ein komplett neues Problem!
                        Als erstes habe ich mir überlegt, dass das UPDATE klappen sollte, da dies ja erst zum Zuge kommt, wenn der SELECT Befehl ausgeführt wurde.
                        Nun mein neues Problem entsteht beim versuch, die neuen Werte zu speichern.
                        Die von mir verwendete Syntay enstammt einer der unzähligen frei zugänglichen Anleitungen, sodass ich in diesen ersten Zeilen komplett nicht verstehe, was eigentlich geschiet (insbesondere Zeile 6).
                        PHP-Code:
                        session_start();
                        include 
                        'sessionhelpers.inc.php';

                        if(isset(
                        $_POST['submit']) AND "Save" == $_POST['submit']) {
                        if(!
                        preg_match('/^\w+$/'trim($_POST['UserName']))) {
                        echo 
                        '<p class="error">';
                        echo 
                        'Please use only signs that the database can handle';
                        echo 
                        '</p>';
                        } else {
                        $sql "UPDATE
                          users
                        SET
                        UserName = '"
                        .trim($_POST['UserName'])."',
                        UserMail = '"
                        .addslashes(trim($_POST['UserMail']))."'
                        WHERE
                        UserID = "
                        .$row['UserID']." ";
                        mysql_query($sql) OR die(mysql_error());
                        echo 
                        '<p>';
                        echo 
                        'Your changes have been saved';
                        echo 
                        '</p>';
                        } } 
                        Also hier raus entsteht folgender Fehler:
                        You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7
                        irgendwie seh ich den Fehler aber nicht. Ich hab da auch die farbliche Unterstscheidung da auch nicht mehr weiterhilft.

                        Kommentar


                        • #27
                          ersetz mal
                          PHP-Code:
                          mysql_query($sql) OR die(mysql_error()); 
                          durch
                          PHP-Code:
                          mysql_query($sql) OR die($sql."\n".mysql_error()); 
                          Ich wette mal, es kommt
                          PHP-Code:
                          WHERE UserID 
                          raus, weil Dein $row['userID'] an der Stelle leer ist.
                          Was sagt print_r($row) ?
                          Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

                          Kommentar


                          • #28
                            Also erst mal, die $row['UserID'] ist nicht leer. Ich habe da ja bereits in meinem letzten Post erwähnt, dass das kein Problem ist, da die Update Funktion ja erst angewannt wird, wenn der User auf save klickt. Und weiter unten wird der Wert UserID aus der Datenback gelesen.
                            Dein Tipp hat zumindest mal eine verbesserung gebracht, leider stellt dass immer noch ein Problem dar. hier ist die Fehlermeldung:
                            UPDATE users SET UserName = 'test123', UserMail = 'test@test.ch' WHERE UserID = You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7
                            So um weitere Konfusionen zu verhindern poste ich hier mal die ganze Datei (oder so viel wie ich schon mal habe. Sie sollte, wenn das hier mal funktioniert, auch noch um die Funktion des Passwort änderns erweitert werden, aber dazu kommen wir erst ein anders mal, wobei ich hoffe, dass ich das dann alleine schaffe, wenn ich hier eine funktionierende Vorlage mit eurer Hilfe erarbeitet habe).
                            PHP-Code:
                            <?php
                            session_start
                            ();
                            include 
                            'sessionhelpers.inc.php';

                            if(isset(
                            $_POST['submit']) AND "Save" == $_POST['submit']) {
                            if(!
                            preg_match('/^\w+$/'trim($_POST['UserName']))) {
                            echo 
                            '<p class="error">';
                            echo 
                            'Please use only signs that the database can handle';
                            echo 
                            '</p>';
                            } else {
                            $sql "UPDATE
                              users
                            SET
                            UserName = '"
                            .trim($_POST['UserName'])."',
                            UserMail = '"
                            .addslashes(trim($_POST['UserMail']))."'
                            WHERE
                            UserID = "
                            .$row['UserID']." ";
                            mysql_query($sql) OR die($sql."\n".mysql_error());
                            echo 
                            '<p>';
                            echo 
                            'Your changes have been saved';
                            echo 
                            '</p>';
                            } }
                            echo 
                            '<body bgcolor="#ffff00" text="#000066">';
                            echo 
                            '<font face="Arial">';
                            echo 
                            " <h2>\n";
                            echo 
                            "Change your profile here";
                            echo 
                            " </h2>\n";
                            echo 
                            '<table border="0" cellpadding="0" cellspacing="3" summary="Your profile" font face="Arial">';

                             
                            $result mysql_query("SELECT * FROM users WHERE UserName = '".$_SESSION['username']."' ") OR die(mysql_error());
                             
                            $row mysql_fetch_array($result) ;

                            echo 
                            '<h3>Your current settings</h3>';
                            echo 
                            '<tr>';
                             echo 
                            '<td width="250">';
                              echo 
                            "Your registered username: " ;
                             echo 
                            '</td>';
                             echo 
                            '<td width="350">';
                              echo 
                            " " .$row['UserName'] ;
                             echo 
                            '</td>';
                            echo 
                            '<tr>';
                             echo 
                            '<td>';
                              echo 
                            "<p>Your registered e-Mail adress: " ;
                             echo 
                            '</td>';
                             echo 
                            '<td>';
                              echo 
                            " " .$row['UserMail'] ;
                             echo 
                            '</td>';
                            echo 
                            '</tr>';
                            echo 
                            '</table><br>';

                            echo 
                            '<hr>';
                            echo 
                            '<h3>Change your settings</h3><p>';
                            echo 
                            ' <form action="user.php" method="post" class="formular"> ';
                            echo 
                            "<ol>\n";

                            echo 
                            '<label for="name">Name</label>&nbsp';
                            echo 
                            "<input type=\"text\" name=\"UserName\" id=\"UserName\" value=\"".$row['UserName']."\"/><p>\n";

                            echo 
                            "<label for=\"email\">e-Mail adress</label>&nbsp\n";
                            echo 
                            "<input type=\"text\" name=\"UserMail\" id=\"UserMail\" value=\"".$row['UserMail']."\"/><p>\n";

                            echo 
                            "<input type=\"submit\" name=\"submit\" value=\"Save\" />\n";
                            echo 
                            "<input type=\"reset\" name=\"submit\" value=\"Clear\" />\n";
                            echo 
                            "<input type=\"hidden\" name=\"".session_id()."\" value=\"".session_id()."\" />\n"// was das hier ist, weiss ich absolut nicht.
                            // brauch ich dass überhaupt?
                            echo "</ol>\n";
                            echo 
                            "</form>\n";

                            echo 
                            '<hr>';
                            echo 
                            '<p><form action="index1.php"><input type="submit" value="Back"></form>';
                            echo 
                            '</font>';
                            echo 
                            '</body>';


                            ?>

                            Kommentar


                            • #29
                              guck dir doch mal Deine Query an! Wer lesen kann ist klar im Vorteil.
                              UPDATE users SET UserName = 'test123', UserMail = 'test@test.ch' WHERE UserID =
                              Na, was hab ich gesagt. Wette gewonnen.
                              Ich wette mal, es kommt
                              PHP-Code:
                              WHERE UserID 
                              raus, weil Dein $row['userID'] an der Stelle leer ist
                              Ich bin mir eben nicht sicher, ob ich hier schon auf $row['UserID'] zurückgreifen kann, da ich die erst weiter unten im Dokument auswerte (oder macht das nichts?)
                              Doch, das macht was. Dein $row['userID'] ist an dieser Stelle leer. Du musst das Select schon VOR dem Update machen.
                              Zuletzt geändert von thommyk; 02.12.2005, 16:55.
                              Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

                              Kommentar


                              • #30
                                Aber ich hab ja alle Werte schon ausgegeben, resp. schon geleden. Denn wenn man sich das ganze mal anschaut, lade ich diesen Wert ja, ich kann ihn ja auch ausgeben! Wenn ich bespielsweise NACH dem Updatebefehl, einfach mal print_r($row) eingebe, dann gibt er mir diese aus, obwohl dann diese Ausgabe ja auch erfolgt, noch bevor ich weiter unten meine Daten per SELECT abfrage.
                                Aber ich glaube dir, denn ich habe nun meine beiden Zeilen, wo das SELECT drin vorkommt einfach mal zu oberst hingeschrieben. Nun gibt's aber ein ganz neues Problem, woran ich so nie gedacht hätte:
                                Die Daten sind nun in der Datenbank geändert, aber nicht in meinem Browser. Da ist in allen Frames (sowohl in diesem hier, der ja neu geladen wird), als natürich auch in allen anderen, noch der alte Benützernamen vorhanden, kann ich das noch irgendwie aktualisieren lassen? Weil das wäre ja irgendwie noch sinnvoll oder?

                                Kommentar

                                Lädt...
                                X