Hi!
undzwar war ich auf der Suche nach einem Sessionbasiertes Loginsystem und habe das hiergefunden. Dazu habe ich einige fragen:
- ist das ein sicheres Loginsystem? Kann man das in die eigene Homepage einbauen?
Bis auf die unnötige Umkopiererei am Anfang sehe ich nichts Auszusetzendes.
- Ich habe ca. 10 Benuzter in einer MySQL Datenbank mit Benutzername und Passwort (mit md5 verschlüsselt). Macht es Sinn, diese Zeile
so um zu schreiben:
// Verbinfung zur Datenbank
mysql_connect("localhost", "xxx", "xxx") or die ("Keine Verbindung");
mysql_select_db("xxx") or die ("Keine Verbindung zur Datenbank");
... or die() macht eigentlich nie Sinn. Sinnvoll ist es auch recht selten. Was kann der Nutzer dafür, dass deine Datenbank streikt? Nichts. Er braucht auch nicht zu wissen, dass sie das gerade macht. Er will an sein Ziel kommen. Was gibt es in dem Fall für Alternativen? Wenn du einen Shop betriebest, wäre es günstig, ihnen eine Bestellung per E-Mail vorzuschlagen, sonst kauft er noch woanders, was es zu vermeiden gilt. Was in deinem Fall für die Nutzer von Interesse ist, weiß ich nicht.
> $sql1 = "SELECT `pwd` FROM `login` WHERE `uname` = $\_POST['user']";
Abgesehen davon, dass mindestens noch ein Satz Anführungszeichen fehlen, fehlt augenscheinlich bei dir noch die Sensibilität für [Kontextwechsel](http://aktuell.de.selfhtml.org/artikel/php/kontextwechsel/). Du fragtest nach Sicherheit, und das Verständnis für Kontextwechsel ist ein wesentlicher Beitrag dazu. Und wenn du das Thema verstanden hast, weißt du, dass nicht nur die Anführungszeichen fehlen.
> // Benutzername und Passwort werden überprüft
> if($passwort == md5(pwd)){
Falschrum. Vom eingegebenen Passwort des Benutzers musst du den Hashwert bilden und den mit dem bereis früher gehashten Wert im DBMS vergleichen.
> Mir ist klar, das `$passwort`{:.language-php} auch md5 verschlüsselt sein muss, bzw. das, was der user eingibt.
Ja, aber wie gesagt, das in der Datenbank ist es schon und muss nicht nochmal.
Zum Rest sag ich jetzt mal nichts, das hat der Tom ja schon in Arbeit.
Lo!