Login Problem - bitte um Hilfe

Flextone

Erfahrenes Mitglied
Hi,

ich habe ein Problem mit einem Login auf einer Webseite. Ich habe derzeit einen funktionierenden Login. Ich habe einfach in eine Function.php Pw sowie user eingefügt. Das heißt das ich ja ein globalen Zugang zu einer Seite stelle.
Nun will ich diesen Login aber erweitern und Benutzer aus einer Datenbank fischen.

In der DB sieht es so aus, dass man folgende Felder hat. ID,login, email_c, pw , ... etc.

Hierbei ist es möglich das es Logins mehrmals in der DB gibt, jedoch nicht die PW's. Diese gibt es eigentlich nur einmal.
In jeder Zeile sind nun auch verschiedenste Date, die im Fall aller Fälle nie gleich sind. Diese gehören aber nichts als Abfragekreterium.

Wenn ich einfach nur willkürlich die DB nach gleichem login und pw abfrage, kann ich ja die Datenausgabe verfälschen und würde nich die passenden Ergebnise zu dem richtigen login und pw erhalten.

Ich denke ich muss Zeile pro zeile auslesen, nur wie kann ich das machen?

Wäre um Hilfe dankbar.

gruss
 
Usernamen dürfen doppelt vorkommen, wenn sie unterschiedliche Passwörter haben? Ich verstehe irgendwie den Sinn nicht und außerdem ist das auch mit vielen Sicherheitslücken verbunden.

Aber selbst wenn du das so machen willst: Wo liegt das Problem?
PHP:
<?php

  /**
   * Gibt die User-ID aus
   * Schlägt der Login fehl, wird 0 zurück gegeben
   *
   * @param user
   * @param password
   * @return UserID
   */
  function login($user, $pass) {
    $sql  = "SELECT `id` FROM `users` ";
    $sql .= "WHERE `login` = '" . $user . "' AND `pw` = '" . $pass . "'";
    $result = mysql_query($sql) OR die(mysql_error());
    if($row = mysql_fetch_assoc($result))
      return $row["id"];
    return 0;
  }

?>
 
Ich verstehe zwar nicht genau, was du mit deinem Beitrag sagen möchtest, doch die Abfrage könnte etwa wie folgt aussehen:
Code:
SELECT
        `id`
  FROM
        `tabelle`
  WHERE
        `login` = "foo"
    AND `pw`    = "bar"
Und solange der Login-Name einzigartig ist, sollte bei Erfolg auch nur ein Datensatz ausgewählt werden.
 
Ok kann wohl sein das ich mich nicht geschickt ausdrücke, ich probiere es gern nochmal.

Also.

Durch ein Admintool adde ich einen Benutzer, wobei ich ihm die email und den login eintrage.Bei diesem Vorgang wird ein Passwort generiert, was dann per mail an den Benutzer geht.
Desweiteren kommen noch Daten hinzu die je nach Benutzer variieren.

JEDOCH (!) : Kann es sein das ich den Benutzer 2,3 oder auch 9 mal adde, jedoch mit komplett anderen Datensätzen, sowie natürlich mit einem ganz anderen Passwort.

Nun geht der Benutzer auf diese besagte Page und will sich einloggen. Er gibt ein:
Login und das ihm zu gesandte Passwort.

Ich zeig einfach mal 3 Zeilen auf, die die DB erklären:

id-1 login-peter pw-2987 daten1- berlin daten2-brot
id-2 login-peter pw-2567 daten1- tokyo daten2-reis
id-3 login-alf pw-3665 daten1- london daten2-tee

Nun gibt Peter das Passwort 2987 ein und er muss die Daten: Berlin und Brot bekommen.
Nicht Tokyo und Reis oder alle 4.

Kann man das besser verstehen?
 
Ja wie ich nun passend das Loginsystem baue.

Ich habe ja nochmal alles genauer afugeschrieben, worauf nun keine Antwort mehr kam.

Kannst du damit was anfangen?!
 
Wie sieht es denn bis jetzt aus? Haben dir Splits oder mein Vorschlag nicht weiterhelfen können?
 
Bitte schau dir doch mal Gumbos Post weiter oben an (mit dem SQL-Query). Erhälst du einen Datensatz zurück, sind Benutzer und Passwort richtig. Dabei kannst du ja auch die Felder daten1 und daten2 mit selektieren.

Die Anzahl der zurückgegebenen Datensätze kannst du mit
PHP:
$anzahl = mysql_num_rows($resource);
prüfen: 0 -> kein Login, 1-> Login.
Um garantiert den richtigen Datensatz zu erwischen, wäre es allerdings einfacher wenn der Benutzername einzigartig bleiben würde. Oder kann man bei dir das Passwort nicht ändern, was dann halt auf das Gleiche in grün rauskommen würde? Du brauchst halt ein Feld zur Identifikation, was einzigartig ist und bleibt.
 
Zurück