MD5 - nich hauen! ;-)

Danke an alle - ich habe einen relativ "einfachen" Weg gefunden das Problem zu loesen.

Ich habe einfach eine If-Abfrage gestartet nachdem ich ein Select nach passwort auf die Tabelle gemacht habe. Hat prima geklappt! :-)

Nochmals danke fuer die Muehe! (begreifen werd ich dieses md5 sowieso nie ;))
 
Hallo Cristina,

so weil der Weisheit letzer Schluss noch von niemandem gepostet wurde möchte ich das Prozedere abkürzen und Schreiben wie ich es (erfolgreich) mache.


1. Mache aus deiner $_POST['pw'] einen String welcher einen MD5()-Hash enthält
PHP:
$passwort = md5($_POST['pw'];
2. Schreibe diesen Wert 1:1 in deine DB also in Kurz:
PHP:
mysql_query("INSERT INTO `irgendwo` ('id', 'user', 'passwort', 'status' ) VALUES ( '', '$_POST[user]', '$passwort', '$_POST[status]' )");
Man (und Frau auch ;) ) beachte dabei dass innerhalb des Querys bei den Post-Variablen die '' in den [] weggelassen werden müssen - das liegt daran das das ganze als String interpretiert wird. Bei Punkt 1 darfst du sie ingegen nicht weglassen da sonst die Variable leer ist bzw. der MD5-Hash von eben "" (also nichts) erzeugt wird - was ja auch wieder einen Hash ausgiebt.

So jetzt steht also in deiner DB der komplette Datensatz drin.
Das Feld in deiner DB für das Passwort muss übrigends mind. 32 Zeichen haben (aber auch nicht unbedingt mehr - ist ja alles Speicherplatz) - das der MD5-Hash 32 Zeichen hat kannst du unter http://www.php.net/md5 nachlesen.

So nun zu deiner Abfrage.

1. Übergibst du deinen User und dein Passwort über das Form an ein PHP-Script. Wir haben dann also mind. die Variablen $_POST['pw'] und $_POST['user'] dann machst du folgendes:
PHP:
$passwort = md5($_POST[#pw'];

2. Suche nach dem Benutzernamen in der DB
PHP:
$abfrage = mysql_query("SELECT * FROM `irgendwas` WHERE user = '$_POST[user]' ");
Wenn du jetzt einen Treffer in der DB hast (kannst dann ja über mysql_num_rows prüfen) dann kannst jetzt abfragen ob dein MD5-Hash (Passwort) von der Eingabe mit dem in der DB übereinstimt.
PHP:
$ds = mysql_fetch_assoc($abfrage);
if($passwort == $ds['pw']) { 
     echo "Hier sind die Daten des Logins";
} else {
     echo "Ihr Passwort ist leider Falsch";
}
Das ganze kann man aber auch umdrehen und sagen "Wenn das Passwort falsch dann exit;"

So ich hoffe, dass ich dich jetzt nicht total verwirrt habe - wennst nicht weiter kommst dann poste doch noch einmal dann Helfe ich dir mit einem konkreten Code weiter.
 
Hey dwex,

danke fuer die Muehe! Ich hab mir diesen Thread gespeichert so dass ich ihn bei bedarf jederzeit wieder hervokramen kann.
Und sieh's mal so - auch wenn's mir nicht geholfen hat dann bestimmt jemand anderem der dazu Fragen hatte ;)

Danke nochmal!
 
dwex hat gesagt.:
2. Suche nach dem Benutzernamen in der DB
PHP:
$abfrage = mysql_query("SELECT * FROM `irgendwas` WHERE user = '$_POST[user]' ");
Wenn du jetzt einen Treffer in der DB hast (kannst dann ja über mysql_num_rows prüfen) dann kannst jetzt abfragen ob dein MD5-Hash (Passwort) von der Eingabe mit dem in der DB übereinstimt. [...]
Etwas effizienter wäre folgendes:
PHP:
$password = md5($_POST['pw']);

$result = mysql_query('SELECT
	`id`
	FROM `irgendwas`
	WHERE `user` = \''.mysql_real_escape_string($_POST['user']).'\'
	  AND `password` = \''.$password.'\''); 

if (mysql_num_rows($result) == 1) {
	echo 'Login korrekt!';
} else {
	echo 'Benutzername und/oder Passwort falsch!';
}
 
Zurück