Martin: PHP MySQL

Hallo zusammen,

habe folgende Zeilen

$abfrage="SELECT username, user_password FROM phpbb_users WHERE username='$benutzername'";
$ergebnis = mysql_query($abfrage);

while($datensatz=mysql_fetch_row($ergebnis))
$abfragepasswort=$datensatz[1];
$abfrageuser=$datensatz[2];

if($passwort_log == $abfragepasswort and $benutzername == $abfrageuser)
    {
    echo "Login korrekt";
    }
  else
    {
    echo "Keine Berechtigung!";
    }

Noch mal kurz zur Erklärung, soll ein Member Bereich werden. Allerdings kommt er wies aussieht nicht mit username und passwort zurecht, denn er zeigt mir immer nur eins von beiden an :(
Vielleicht hat jemand einen Tipp, wär echt super.
Danke

  1. Hi,

    $abfrage="SELECT username, user_password FROM phpbb_users WHERE username='$benutzername'";
    while($datensatz=mysql_fetch_row($ergebnis))

    wie oft kommt der Benutzername denn vor? Ich propagiere einfach mal, dass er auf (maximal) ein Vorkommen begrenzt ist - genau wie die Kombination aus Passwort und Benutzername. Das Wissen darum, dass der Benutzername existiert, aber ein anderes Passwort hat, nützt Dir übrigens nichts.

    Allerdings kommt er wies aussieht nicht mit username und passwort zurecht, denn er zeigt mir immer nur eins von beiden an :(

    Äh?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. wie oft kommt der Benutzername denn vor?

      der kommt natürlich nur einmal in der DB vor.

      Das Wissen darum, dass der Benutzername existiert, aber ein anderes Passwort hat, nützt Dir übrigens nichts.

      ähm ich prüf doch nur ob user und passwort aus der DB mit den Eingaben stimmen...

      Allerdings kommt er wies aussieht nicht mit username und passwort zurecht, denn er zeigt mir immer nur eins von beiden an :(

      Äh?

      Ich lass mir noch zum Testen den User und das Passwort aus der DB via echo anzeigen und hier wird immer nur ein Wert dargestellt.

      1. Hi,

        ähm ich prüf doch nur ob user und passwort aus der DB mit den Eingaben stimmen...

        nein. Du prüfst das Vorkommen des Usernamen, holst diesen und das zugehörige Passwort aus der DB, prüfst noch einmal den Usernamen und erstmalig das Passwort. Wenn das Passwort nicht stimmt, brauchst Du erst gar nicht den Datensatz zu holen.

        Ich lass mir noch zum Testen den User und das Passwort aus der DB via echo anzeigen und hier wird immer nur ein Wert dargestellt.

        Einen diesbezüglichen Code habe ich nicht gesehen.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. yo,

          mal davon abgesehen, dass der weg von cheatah besser ist, nur zu prüfen ob es eine kombination aus loginname und passwort in der tabelle gibt, was einer korrekten identifikation gleichzusetzen ist, wäre eine while schleife auch überflüssig, da es sowieso nur einen datensatz gibt.

          Ilja

        2. Wenn das Passwort nicht stimmt, brauchst Du erst gar nicht den Datensatz zu holen.

          Aber der Datensatz muß doch geholt werden um es mit der Eingabe des Users zu vergleichen...

          Einen diesbezüglichen Code habe ich nicht gesehen.

          Habe ich auch nicht mit angehängt, da dieser ja nichts mit dem eigentlich code zu tun hat...

          1. Hi,

            Wenn das Passwort nicht stimmt, brauchst Du erst gar nicht den Datensatz zu holen.
            Aber der Datensatz muß doch geholt werden um es mit der Eingabe des Users zu vergleichen...

            bist Du Dir sicher, dass Du SQL verstanden hast?

            Einen diesbezüglichen Code habe ich nicht gesehen.
            Habe ich auch nicht mit angehängt, da dieser ja nichts mit dem eigentlich code zu tun hat...

            Wenn er ein Problem beinhaltet, wäre seine Nennung schon recht sinnvoll ...

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. bist Du Dir sicher, dass Du SQL verstanden hast?

              Wie soll die Abfrage denn sonst lauten? Ich meine die Formular Daten müssen doch mit der DB verglichen werden oder seh ich das falsch?

              1. Hi,

                Wie soll die Abfrage denn sonst lauten? Ich meine die Formular Daten müssen doch mit der DB verglichen werden oder seh ich das falsch?

                ja, sicher - dazu erzeugst Du ein SQL-Statement.

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
              2. yo,

                Wie soll die Abfrage denn sonst lauten? Ich meine die Formular Daten müssen doch mit der DB verglichen werden oder seh ich das falsch?

                der vergleich erfolgt schon innerhalb der abfrage, sprich du gibst in der WHERE klausel nicht nur den benutzernamen, sondern auch das passwort an.

                SELECT username FROM phpbb_users WHERE username='$benutzername' AND password='$password';

                nun fragst du als überprüfung nur noch ab, ob die funktion mysql_num_rows dir einen wert liefert und schon ist die verifizierung erfolgt, weil er keinen datensatz zurück liefern würde, wenn die kombination aus benutzername und passwort nicht stimmt.

                Ilja

  2. Huhu Martin

    lies Dir noch mal

    http://de3.php.net/manual/en/function.mysql-fetch-row.php

    gründlich durch, da steht u.a.

    <quote>
    The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.
    </quote>

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday