Problem mit MD5-Funktion

Needa

Mitglied
Nabend,

ich bin gerade am Schreiben/Umschreiben von einem Loginscript und ich konnte den Fehler zu 99,9% auf die MD5-Verschlüsselung zurückführen. Die Tabelle in der Datenbank hat 4 Felder, das Passwort ist in der Datenbank natürlich auch MD5-verschlüsselt.

Die wichtige Passage sieht momentan so aus:
PHP:
$sql = "SELECT id, name, kennwort FROM admin WHERE (name like '$loginname') AND (kennwort = '".md5($_REQUEST['loginpwd'])."')";

 $result = mysql_query ($sql);
 if (mysql_num_rows ($result) > 0)
    {  echo "Eingeloggt."; } else { echo "Nicht eingeloggt."; }

Verbindung zur Datenbank ist da! Ohne das md5 bei kennwort = und ohne Verschlüsselung in der Datenbank funktioniert es! Da wird dann "Eingeloggt" angezeigt, also muss es an der liegen. Ich habe das bei zwei Servern ausprobiert, einmal bei meinem XAMPP und einmal per Funpic, bei beiden Versuchen kein Erfolg. Ich hoffe ihr könnt mir weiterhelfen, es muss definitiv an dieser dämlichen Verschlüsselung liegen und ohne bringt das Script in meinen Augen nichts.
 
1. Das heißt md5 Hash
2. Was soll daran nicht gehen? Gibt es eine Fehlermeldung?
3. Setzt mal hinter das mysql_query() noch ein OR die(mysql_error())
 
fanste hat gesagt.:
1. Das heißt md5 Hash
2. Was soll daran nicht gehen? Gibt es eine Fehlermeldung?
3. Setzt mal hinter das mysql_query() noch ein OR die(mysql_error())

Zu 1. Okay, werd's mir merken.
Zu 2. Nein, keine, nur das "Nicht eingeloggt" - wie gesagt, er kann die Daten ja auslesen.
Zu 3. Keine Fehlermeldung, weiterhin nur das "Nicht eingeloggt".
 
Das komische ist nur, wenn ich das jetzt einmal so bei mir ausprobiere (auch XAMPP) geht es:
PHP:
<?
$_REQUEST['loginpwd'] = "123";
$loginname = "grubi";

mysql_connect('localhost','***','***');
mysql_select_db('tests');

$sql = "SELECT id, name, kennwort FROM admin WHERE (name like '$loginname') AND (kennwort = '".md5($_REQUEST['loginpwd'])."')";

$result = mysql_query ($sql);
if (mysql_num_rows ($result) > 0)
    {  echo "Eingeloggt."; } else { echo "Nicht eingeloggt."; }
    ?>

Du könntest es mal so probieren.

$pwd = md5($_REQUEST['loginpwd']);
und dann das in der Abfrage verwenden.
 
Nein, funktioniert so auch nicht.
Welche XAMPP-Version benutzt du denn?
Ich nutze 1.4.14 - aber daran sollte es auch nicht liegen, denn es läuft per Funpic ja auch nicht.
 
Ah stelle gerade fest, dass ich ja gar kein xampp verwende. Da hatte ich Probleme mit der apache Version 2. Bin auf wampp1 umgestiegen. Eigentlich muss das gehen. Bin auch bei funpic. Da habe ich bisher immer MD5 verwenden können. Sicher, dass die zwei Hash Codes auch wirklich gloeich sind?
 
Lass dir mal dein PW als MD5 ausgeben und vergleich das manuell mit dem Wert in der DB. Du sagtest ohne Verschlüsselung ging es daher gehe ich davon aus der Wert wird nicht richtig gespeichert... Vieleicht ist dein Feld zu klein? 32 Zeichen müssen es sein, galube ich.
 
Gumbo, weinen bitte.
Das Datenbank feld muss immer LÄNGE_DER_DATEN + 1 groß sein wegen dem \0 zeichen..
 
Zurück