Seite 1 von 2
Userdaten in selbstprogrammiertem nutzen
Verfasst: 23.10.2007 19:03
von sowiso
Hallo!
Kann mir jemand sagen wie ich vergleichen kann ob die eingegeben daten mit den verschlüsselten daten übereinstimmen und wie ich dann auch ein neues Passwort generieren kann?
Derzeit lese ich folgendermaßen die daten aus der DB uas:
Code: Alles auswählen
$res = mysql_query("select * from mitglieder where username like '$username'");
$num = mysql_affected_rows();
if ($num>0)
{
$dbusername = mysql_result($res,0,"username");
$dbkennwort = mysql_result($res,0,"kennwort");
}
und dann kann ich die variabeln ganz normal verwenden.
Danke für die Hilfe
Verfasst: 23.10.2007 21:26
von bantu
Code: Alles auswählen
// Check Password
if ( md5($eingabe) == $dbkennwort)
{
$login_success = true;
}
Verfasst: 23.10.2007 21:29
von FCM
Um zu vergleichen ob das Passwort mit dem in der Datenbank übereinstimmt, müsstest du dies anwenden:
Code: Alles auswählen
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
if ($dbkennwort == md5($password)) {
echo "Das Passwort war richtig!";
} else {
die("Das Passwort war falsch, Zugriff verweigert.");
}
Um das Passwort zu ändern musst du dies machen:
Code: Alles auswählen
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$query = "UPDATE mitglieder SET password = '$password' WHERE username = '$username'";
$query = mysql_query($query);
Die Funktion
mysql_real_escape_string() ist nötig, um den String zu maskieren - dies beugt einer
SQL-Injection vor. Die Funktion
md5() wandelt das von Benutzer eingegebene Passwort in einen MD5-Wert um, da es ja auch so in der Datenbank gespeichert ist.
Verfasst: 23.10.2007 21:48
von Boecki91
FCM hat geschrieben:Um das Passwort zu ändern musst du dies machen:
Code: Alles auswählen
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$query = "UPDATE mitglieder SET password = '$password' WHERE username = '$username'";
$query = mysql_query($query);
Die Funktion
mysql_real_escape_string() ist nötig, um den String zu maskieren - dies beugt einer
SQL-Injection vor. Die Funktion
md5() wandelt das von Benutzer eingegebene Passwort in einen MD5-Wert um, da es ja auch so in der Datenbank gespeichert ist.
Wenn du schon sagst das es ein md5 Hash ist wieso wandelst du den bei der Eingabe nicht auch schon um?
Das müsste nach meinen bescheidenden SQL-Kenntnissen möglich sein:
Code: Alles auswählen
$query = "UPDATE mitglieder SET password = MD5('$password') WHERE username = '$username'";
Verfasst: 23.10.2007 21:50
von FCM
Boecki91 hat geschrieben:FCM hat geschrieben:Um das Passwort zu ändern musst du dies machen:
Code: Alles auswählen
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$query = "UPDATE mitglieder SET password = '$password' WHERE username = '$username'";
$query = mysql_query($query);
Die Funktion
mysql_real_escape_string() ist nötig, um den String zu maskieren - dies beugt einer
SQL-Injection vor. Die Funktion
md5() wandelt das von Benutzer eingegebene Passwort in einen MD5-Wert um, da es ja auch so in der Datenbank gespeichert ist.
Wenn du schon sagst das es ein md5 Hash ist wieso wandelst du den bei der Eingabe nicht auch schon um?
Das müsste nach meinen bescheidenden SQL-Kenntnissen möglich sein:
Code: Alles auswählen
$query = "UPDATE mitglieder SET password = MD5('$password') WHERE username = '$username'";
Ja, das ist Geschmackssache.

Verfasst: 23.10.2007 21:51
von bantu
Oh.. jetzt seh ichs auch, die MD5-Funktion hat er schlichtweg vergessen.
Ob jetzt mit PHP oder MySQL ist fast egal. Eventuell haben andere Datenbanksysteme kein MD5.

(Ich weiß es nicht)
Verfasst: 23.10.2007 21:53
von FCM
bantu hat geschrieben:Oh.. jetzt seh ichs auch, die MD5-Funktion hat er schlichtweg vergessen.
Ob jetzt mit PHP oder MySQL ist fast egal. Eventuell haben andere Datenbanksysteme kein MD5.

(Ich weiß es nicht)
Warum vergessen? Hatte es in der If-Schleife ja eingebaut.

Verfasst: 23.10.2007 21:54
von bantu
Im zweiten Code-Abschitt fehlt das MD5.
FCM hat geschrieben:Code: Alles auswählen
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$query = "UPDATE mitglieder SET password = '$password' WHERE username = '$username'";
$query = mysql_query($query);
Verfasst: 23.10.2007 21:55
von Boecki91
FCM hat geschrieben:
Ja, das ist Geschmackssache.

Und wenn man bei dir wieder das Passwort prüft, kann es nicht mehr stimmen. oder haben bantu und ich die md5 Umwandlung beide übersehen?
@bantu
mysql_query und mysql_real_escape_string werden wohl noch unwahrscheinlicher mit einer nicht mysql DB laufen. (Was für ein Satz?

)
Edit: 2 Beiträge wärend ich das hier Tippe...
Edit: Ok 3

Verfasst: 23.10.2007 21:56
von FCM
bantu hat geschrieben:Im zweiten Code-Abschitt fehlt das MD5.
FCM hat geschrieben:Code: Alles auswählen
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$query = "UPDATE mitglieder SET password = '$password' WHERE username = '$username'";
$query = mysql_query($query);
Achso, da, entschuldigung, habe mich versehen.