Userdaten in selbstprogrammiertem nutzen

Eine Neuinstallation von phpBB 2.0 wird auf phpBB.de nicht mehr unterstützt.
Siehe auch Entwicklungs-Ende von phpBB 2.0 - Auswirkungen auf phpBB.de
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.

Eine Neuinstallation von phpBB 2.0 wird auf phpBB.de nicht mehr unterstützt.
Siehe auch Entwicklungs-Ende von phpBB 2.0 - Auswirkungen auf phpBB.de
sowiso
Mitglied
Beiträge: 23
Registriert: 20.10.2007 17:18
Kontaktdaten:

Userdaten in selbstprogrammiertem nutzen

Beitrag 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
Benutzeravatar
bantu
Server-Team
Beiträge: 7311
Registriert: 25.04.2006 16:12
Wohnort: Karlsruhe

Beitrag von bantu »

Code: Alles auswählen

// New Password
$new_password = md5($old_password);

Code: Alles auswählen

// Check Password
if ( md5($eingabe) == $dbkennwort)
{
     $login_success = true;
}
Powered by Coffee
FCM
Mitglied
Beiträge: 1863
Registriert: 03.05.2006 14:47
Kontaktdaten:

Beitrag 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.
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Beitrag 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'";
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
FCM
Mitglied
Beiträge: 1863
Registriert: 03.05.2006 14:47
Kontaktdaten:

Beitrag 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. :P
Benutzeravatar
bantu
Server-Team
Beiträge: 7311
Registriert: 25.04.2006 16:12
Wohnort: Karlsruhe

Beitrag 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. :wink: (Ich weiß es nicht)
Powered by Coffee
FCM
Mitglied
Beiträge: 1863
Registriert: 03.05.2006 14:47
Kontaktdaten:

Beitrag 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. :wink: (Ich weiß es nicht)
Warum vergessen? Hatte es in der If-Schleife ja eingebaut. :-?
Benutzeravatar
bantu
Server-Team
Beiträge: 7311
Registriert: 25.04.2006 16:12
Wohnort: Karlsruhe

Beitrag 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);
Powered by Coffee
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Beitrag von Boecki91 »

FCM hat geschrieben: Ja, das ist Geschmackssache. :P
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? :D )

Edit: 2 Beiträge wärend ich das hier Tippe...
Edit: Ok 3 :D
Zuletzt geändert von Boecki91 am 23.10.2007 21:57, insgesamt 2-mal geändert.
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
FCM
Mitglied
Beiträge: 1863
Registriert: 03.05.2006 14:47
Kontaktdaten:

Beitrag 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.
Gesperrt

Zurück zu „phpBB 2.0: Installation und Update“