Thomas: Bekomme Usernamen nicht angezeigt

Hallo,

ich möchte einen Usernamen aus einer Tabelle holen, mit dieres Funktion:

function getUsername($db) {
    if (!is_object($db)) {
        return false;
    }
    if (!($db instanceof MySQLi)) {
        return false;
    }
    if (!isset($_COOKIE['UserID'], $_COOKIE['Password'])) {
        return false;
    }
    $sql = 'SELECT
                Username
            FROM
                User
            WHERE
                ID = ? AND
                Password = ?';
    $stmt = $db->prepare($sql);
    if (!$stmt) {
        return $db->error;
    }
    $stmt->bind_param('is', $_COOKIE['UserID'], $_COOKIE['Password']);
    if (!$stmt->execute()) {
        $str = $stmt->error;
        $stmt->close();
        return $str;
    }
    $stmt->bind_result($Username);
    if (!$stmt->fetch()) {
        $stmt->close();
        return false;
    }
    $stmt->close();
    return $Username;
}

hiermit habe ich die Tabelle angelegt:

CREATE TABLE User (
    ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Username VARCHAR(30) NOT NULL,
    Password CHAR(32) NOT NULL,
    Email VARCHAR(100) NOT NULL
);

und das hab ich in die index.php gepackt damit nach dem login ein logout angezeigt wird mit usernamen:

<?php
  if(getUserID($db))
{
    echo getUsername($db);
      include 'includes/Templates/Login/logout.tpl';
  }else {
     include 'includes/Templates/Login/login.tpl';
}
?>

Ich kann die Funktion getUserID anfügen, aber ich denke es liegt an dem Teil in index.php oder der function getUsername...

ich bekomme diese Fehlermeldung:
Fatal error: Call to undefined function getUsername() in C:\xampp\htdocs\index.php on line 148

also das hilft mir nicht viel...

mfg Thomas

  1. ich bekomme diese Fehlermeldung:
    Fatal error: Call to undefined function getUsername() in C:\xampp\htdocs\index.php on line 148

    Die Funktion steht nicht zur Verfügung. Hast du vergessen, sie mit include einzubinden?

    MfG Freitag

    1. ich bekomme diese Fehlermeldung:
      Fatal error: Call to undefined function getUsername() in C:\xampp\htdocs\index.php on line 148

      Die Funktion steht nicht zur Verfügung. Hast du vergessen, sie mit include einzubinden?

      MfG Freitag

      Okay Problem war ? Keine Ahnung jetzt gehts, komisches Programm...

      Aber 2 Datenbankabfragen sind mir einfach zuviel...
      den Namen also cookie übergeben hat erstmal nicht geklapt, vielleicht liegts wieder am Programm... ist das den üblich oder geht man meinen weg oder kann ich das getuserID irgendwie durch getUsername ersetzen weil wenn es einen gibt den dann printen und logout.tpl anzeigen

      hier der beschriebene Teil

      <?php
        if(getUserID($db))    //möchte ich irgendwie durch getUsername ersetzen
      {
          echo getUsername($db);   //Username dann hier printen
            include 'includes/Templates/Login/logout.tpl';
        }else {
           include 'includes/Templates/Login/login.tpl';
      }
      ?>

      mfg Thomas

      1. Hi,

        ich verstehe das Problem nicht.

        Frage Username und Passwort vom User ab. Schau in der DB nach.
        Mit: SELECT id FROM user WHERE username = EINGEGEBENER_USERNAME AND password = EINGEGEBENES_PASSWORT

        Wenn du da genau 1 Ergebnis bekommst, ist der USer richtig eingeloggt und das Ergebnis ist auch gleich die ID.

        Wenn der User mit Cookies eingeloggt beliben soll, speichere da nicht das Passwort sondern eine Session ID oder sowas.

        Dann lässt du halt   id, username    ausgeben.

        Jedenfalls musst du mysql_real_escape_string verwenden um  die Usereingaben (auch das was ausm Cookie) kommt zu entschwärfen, dass keiner eine Injection machen kann - niemals einfach irgend eine Eingabe ungeprüft übernehmen.

        Das Passwort sollte außerdem verschlüsselt gespeichert werden - dann kann der Admin nicht einfach alle Passwärter der User auslesen.

        Gruß
        Alex

        1. Hi,

          ich verstehe das Problem nicht.

          Frage Username und Passwort vom User ab. Schau in der DB nach.
          Mit: SELECT id FROM user WHERE username = EINGEGEBENER_USERNAME AND password = EINGEGEBENES_PASSWORT

          Wenn du da genau 1 Ergebnis bekommst, ist der USer richtig eingeloggt und das Ergebnis ist auch gleich die ID.

          Wenn der User mit Cookies eingeloggt beliben soll, speichere da nicht das Passwort sondern eine Session ID oder sowas.

          Dann lässt du halt   id, username    ausgeben.

          Jedenfalls musst du mysql_real_escape_string verwenden um  die Usereingaben (auch das was ausm Cookie) kommt zu entschwärfen, dass keiner eine Injection machen kann - niemals einfach irgend eine Eingabe ungeprüft übernehmen.

          Das Passwort sollte außerdem verschlüsselt gespeichert werden - dann kann der Admin nicht einfach alle Passwärter der User auslesen.

          Gruß
          Alex

          Jo danke alles gemacht, funktioniert super.

          Habe jetzt ein anderes Problem, ich hab nen facebook like it button zu meiner seite hinzugefügt welches ein iframe ist wenn ich jetzt ausführe wird eine html seite erstellt die genau mit diesem frame endet...
          Es wird also alles was danach kommt einfach ausgeschnitten, was dazu führt das mein footer nicht angezeigt wird...
          Villt hatte mal wer das Problem...?

          mfg Thomas

          1. Hi,

            bitte zitiere sinnvoll, das worauf du dich konkret beziehst, und nicht einfach alles.

            Habe jetzt ein anderes Problem, ich hab nen facebook like it button zu meiner seite hinzugefügt welches ein iframe ist wenn ich jetzt ausführe wird eine html seite erstellt die genau mit diesem frame endet...
            Es wird also alles was danach kommt einfach ausgeschnitten, was dazu führt das mein footer nicht angezeigt wird...

            1. Validiere deinen Code.
            2. </hilfe/charta.htm#tipps-fuer-fragende>

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?