• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Username && Pw abfrage von Datenbank?

Ich habe mir eine Login Page erstellt,
muss nun passwörter und Usernamen von der Datenbank aus lesen.
Wie stelle ich das an?
Ich hatte vor:
Datenbank mit einer Schleife durchzulaufen und nach dem namen zu suchen.
Hier schon mein erstes Problem, wie kann ich sagen, wenn du den namen gefunden guck nach ob das dazugehörige Passwort stimmt.

Zusatzinfos:
User werden noch per Hand eingetragen.
Die Datenbank besteht aus folgenden 2 Feldern:
name(Primärschlüßel, name der user) , pw (hier werden die Passwörter gespeichert)

Würde es auch möchlich sein, wenn ich die 5-6 namen in einer include Datei (z.B. uspw.inc.php) abspeichere? Ist es sicher genug?
 
Warum die Schleife? Einfach direkt danach fragen:

Code:
SELECT COUNT(*) FROM benutzertabelle WHERE username = 'wasDerUserEingibt' AND passwort = 'wasDerUserAlsPWDgenanntHat'

Wenn der User eine richtige Username/Passwort kombination eingeben hat liefert die Abfrage 1, ansonsten 0.

In eine Includedatei würde ich das nicht schreiben. Dann musst Du jedesmal die Datei anpassen wenn ein User hinzukommt oder sein Passwort ändern will.

Achja: In der DB speichert man keine Passwörter, nur Hashes, als Prüfsummen der Passwörter. MySQL liefert dafür die MD5 Funktion oder die Passwortfunktion. Demenstprechend sähe der Query von oben so aus:

Code:
SELECT COUNT(*) FROM benutzertabelle WHERE username = 'wasDerUserEingibt' AND passwort = MD5('wasDerUserAlsPWDgenanntHat')
 
Tachchen,
ist das nicht ein bisschen unsicher, von wegen SQL-Injection?

Ich würde da eher ein wenig verschachteln...(die Lösung ist zwar nicht für 100.000 User in der DB zu empfehlen, aber mit 100 Usern sollte das noch schnell genug sein ;)

Code:
$query = mysql_query( "SELECT username, passsword FROM users" );
$userloggedin = false;
while( $userdata = mysql_fetch_array( $query ) )
{
   if( $userdata['username'] == $UserNameAusFormular AND $userdata['password'] == $UserPasswsAusFormular )
   {
       $userloggedin = true;
       break;
   }
}
Auf diese Weise gelangen die Usereingaben nicht direk an die Datenbank sondern werden nur von PHP verarbeitet. Hier ist keine Injection möglich!
 
Das ganze ist aus Performance sicht aber nicht optimal. SQL Injections lassen sich einfacher vermeiden. mysql_escape_string oder noch besser die mysqli Erweiterung. Damit sind prepared Querys möglich. Spätestens damit ist Ruhe vor Injections. Allerdings ist mysqli noch in der Entwicklung. Die Schnittstellen könnten sich also noch ändern.
 
Oben