MD5 - nich hauen! ;-)

Hi zusammen,

hab mir eine ganze Reihe der bereits existierenden MD5 Threads angeschaut aber mein Problem besteht weiterhin.

Ich habe folgenden code um das Passwort fuer einen neuen User in der MySQL DB zu verschluesseln:

insertuser.php
PHP:
$pass=md5($_POST[pw]);

$sql= "insert into users values ('', '$_POST[user]', password('$pass'), '$_POST[status]');
Alles klappt prima, ich habe einen verschluesselten Wert in MySQL.

Wenn ich jetzt aber versuche mich mit diesem Usernamen und dem Passwort einzuloggen klappt das nicht.

login.php

PHP:
$query= "select username, password from users where username='$_POST[username]' and password='md5($_POST[password]'";

Kann mir bitte jemand helfen? Ich blick bei diesem MD5 Zeug nicht durch! Ich habe mehrere Kombinationen versucht um das Passwort richtig aus der DB auszulesen aber ich glaube ich bin nicht helle genug dafuer.
Danke! :-)
 
ist das feld für den md5 gross genug in der db ? das war damals mein problem, dass der md5 abgeschnitten wurde. ;-)

gruss,

markus
 
Hallo!

Programmiere sauber, dann gibt es auch solche Fehler nicht!
PHP:
 $pass=md5($_POST[pw]);

$sql= "insert into users values ('', '$_POST[user]', password('$pass'), '$_POST[status]');

Was soll das password($pass) hier? Wie kommst du darauf, dass du einfach ein Array in den String schreibst? Ich würde vorschlagen:
PHP:
$sql= 'INSERT INTO `users` (`Benutzername`, `Passwort`, `Status`) VALUES ("'.$_POST[user].'", "'.$pass.'", "'.$_POST[status].'")';

Und genaus machst du das bei der Kontrolle!

Mamphil

EDIT: Du solltest die $_POST-Variablen noch dringend überprüfen und ggf. durch ein stripslashes und danach durch ein mysql_real_escape_string "jagen"...
 
Das Problem liegt einfach daran, dass die MySQL Funktion password() einen anderen Hash-Wert erzeugt als die PHP-Funktion MD5(). Du musst also beim Speichern und beim Vergleichen einfach nur die gleichen Funktionen benutzen.

Dazu kommt noch, dass du sogar dein Passwort zweimal verschlüsselt hast (einmal mit md5() und einmal mit password()).

Allgemein mehr zum Thema md5() kannst du auch hier noch mal nachlesen:
http://www.heddesheimer.de/coaching/php_md5.html

Gruß Marian
 
heddesheimer hat gesagt.:
[...]Dazu kommt noch, dass du sogar dein Passwort zweimal verschlüsselt hast (einmal mit md5() und einmal mit password()).[...]
Ich leg ja gerne Worte auf die Goldwaage, daher: md5 verschlüsselt nicht, sondern erzeugt einen Hash - wie du selbst schon geschrieben hast.
 
Naja für mich jedenfalls ist md5 eine Einwegverschlüsselung, auch, wenn's keine ist ;)
Macht aber das selbe.

Naja Einwegverschlüsselung klingt irgendwie paradox ... ;)
 
Ich vor ein paar Jahren übrigens mal gelesen, dass $foo[bar] nicht das gleiche ist wie $foo['bar'], und würde daher eher zum zweiten tendieren.
 
Ja, man muss, wenn man assoziative Arrays hat (Strings als Schlüssel), die ' ' schreiben.
Sollte zumindest.

Aber anders geht's normalerweise auch ... ;)
 
Und dann wundert man sich irgendwann, dass sein Skript nicht mehr funktioniert wenn man mal die Konstanten für sich entdeckt (und sich dabei nicht an allgemeingültige Bezeichnungsregeln hält). ;)
 
Zurück