Login erstellen mit PHP, MySQL, MD5
Problem gelöst wurde. Vielen Dank an allen, die geschrieben und mir geholfen. Die Spalte Typ war zu kurz (varchar(25)) - ich erweiterte es und war in der Lage, um sich einzuloggen. Alle, Kommentare geschätzt wurden.
Ich habe einige Probleme wenn ich versuche, melden Sie sich mit einem test-account habe ich erstellt. Ich versuche, meine eigenen CMS. Jetzt habe ich die register-Seite vollständige und arbeiten auf der login-Seite. Ich habe die MD5-würde das Kennwort des Benutzers auf registrieren. Wenn ich gehe, um zu versuchen und Anmeldung über dieses Konto wird der hash generiert, der auf der login-Seite NIE entspricht dem hash gespeichert in meiner SQL-Datenbank.
Hier ist mein PHP-code und MySQL-Abfragen:
$username = mysql_real_escape_string($_REQUEST['username']);
$password = mysql_real_escape_string($_REQUEST['password']);
$query = mysql_query("SELECT username FROM records WHERE username='".$username."'") or die(mysql_error());
$result= mysql_fetch_array( $query );
if($result[0] == $username) {
$query = mysql_query("SELECT password FROM records WHERE username='".$username."'") or die(mysql_error());
$result = mysql_fetch_array( $query );
$passHash = md5($password);
echo "Hash: ".$passHash."<br/>";
echo "User's hash: ".$result[0];
if($result[0] == $passHash) {
echo "XXXXX: WIN";
}
else {
echo "fail";
}
Ich habe ein Konto namens "alex" die MD5 generiert wurde auf der registrieren-Seite ist "1c13465e24d91aca4d3ddaa1b" der MD5-hash generiert, der auf die login-Seite ist "1c13465e24d91aca4d3ddaa1bc3e7027"
Hier ist meine Anmeldung Seite code:
$username = mysql_real_escape_string($_REQUEST['username']);
$password = mysql_real_escape_string($_REQUEST['password']);
$md5_pass = md5($password);
mysql_real_escape_string(mysql_query("INSERT INTO records (username, password, ) VALUES('$username', '$md5_pass' ) ") or die(mysql_error()));
Was mache ich falsch? Ich habe die Suche hier und sah Sie an:
md5 hash login mit php und mysql
aber kein Glück. Jede Hilfe wird sehr geschätzt!
- Konnte Sie nach dem code, der in die Daten in der DB?
- Haben Sie versucht, $password = $_REQUEST['Passwort']; anstatt $Passwort = mysql_real_escape_string($_REQUEST['Passwort']); ???
- Sicher, schau in meine ursprünglichen post!
- wohl die Länge des Feldes in der Datenbank geringer ist als die Länge des md5-Werte, varchar(50) ist eine option
- Wahrscheinlich der Datentyp der Spalte für das Passwort ist vom Datentyp VARCHAR(25), tho Ihr tut die ganze login-Skript falsch, auch md5 nicht sicher ist, wie das böse als Passwort.
- Ich bin voll und ganz bewusst, md5-Verschlüsselung. Ich entwickle dies als ein internes system für meine Bruderschaft, die nur die Brüder kennen. Ich bin nicht wirklich besorgt über eine von Ihnen versuchen, um zu versuchen und SQL injizieren Sie die Seite oder irgendetwas, aber ich nehme an, dass ich cal immer SALZ das Passwort.
- md5 und die Verschlüsselung sollte niemals im gleichen Satz, geschweige denn in der gleichen Zeile...
- Nope, noch nie Benutzer $_REQUEST['password'] auf seine eigene, verlassen Sie eine Hintertür zu SQL-Injection-Angriffe auf diese Weise. Geophoenix richtig sein könnte. Ändern Sie das Passwort Spalte Typ auf varchar(32) und sehen, ob es funktioniert. Obwohl ich würde vorschlagen, nicht mit md5, und sha1 oder sogar sha256/512, wenn Sie paranoid über die Sicherheit. Kollision Angriffe auf md5 gefunden wurden, und Sie sind ziemlich einfach zu bewerkstelligen.
- danke, ich werde versuchen, die Erweiterung der Spalte Typ. Ich bin ein Anfänger in PHP und MySQL so irgendwelche Tipps sehr geschätzt wird, wie ein anderer Nutzer weiter unten vorgeschlagen.
- Es hat mich alle 1 Sekunde um Eingabe der hash in google zu finden sein Wert.
- Es ist ein test-Konto. Herzlichen Glückwunsch zum kopieren und einfügen von hash in Google für ein Wort, das im Wörterbuch. Ich bin nur die Prüfung der Anmeldung als jetzt. Deshalb erstellte ich ein scheiß-Konto zu Testzwecken. Wie ich bereits sagte, ich bin neu in diesem. Lese ich Ihren Kommentar über die Verlängerung der Länge. Keine Notwendigkeit zu halten belästigen Sie mich über die lahme Passwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich die Spalte, die speichert die Passwort-Hashes zu kurz, z.B.
VARCHAR(25)
.Machen Sie es größer:
CHAR(32)
oderBINARY(16)
.Siehe auch:
Erstens, nutzen eine einzige SELECT-Anweisung, um Ihre Benutzer-Daten:
Zweiten Punkt - nicht verwenden, mysql_* - Funktionen - Sie sind veraltet. Schalter auf PDO oder MySQLi.
Möglicherweise gibt es Raum in Ihrem DB übergeben...