pc-nico Geschrieben 24. April 2007 Geschrieben 24. April 2007 Hallo Leute, mein Provider hat die MySQL-Serverversion gewechselt... Die alte Version war: Server Version: 4.0.21 Die neue Version ist: Server Version: 4.1.10 Die neue Version unterstützt verschiedene Zeichensätze bei der Datenbankverbindung.... In der DB habe ich in einer Tabelle ein Feld dessen Werte mit der MySQL Funktion PASSWORD() kodiert wurden. Die Datenbank wird mit PHP benutzt. Wenn sich User anmelden, generiere ich mit der MySQL Funktion PASSWORD bei einer Abfrage ein kodiertes Passwort der Usereingabe auf der Web-Seite. Diesen String vergleiche ich dann mit dem Sting in der DB. Sind sie gleich, hat der user das richtige Passwort eingegeben. Das ging bisher auch prima, aber seit dem Update geht das nicht mehr... hatt jemand eine Idee woran das liegen könnte? Hier mal der Quellcode, wems hilft: if ($_POST) // Wenn Formular abgesicht wurde { $result = mysql_query ("select * from $table_user where username = '$wert1' and kennung = PASSWORD('$wert2')"); if(mysql_num_rows($result) === 1) // Wenn ein User mit dem PW in der DB gefunden wurde: { $_SESSION['username'] = mysql_result($result,0,"username"); $_SESSION['flags'] = mysql_result($result,0,"flags"); $_SESSION['zugang'] = 1; echo "<h2>Login erfolgreich. Lade....</h2>"; echo '<meta http-equiv="refresh" content="2; URL=admin/index.php">'; die(); } else echo "<h2>Username oder Passwort falsch!!!</h2>"; }[/PHP] Zitieren
geloescht_JesterDay Geschrieben 24. April 2007 Geschrieben 24. April 2007 Die alte Version war: Server Version: 4.0.21 Die neue Version ist: Server Version: 4.1.10 [...] hatt jemand eine Idee woran das liegen könnte? MySQL AB :: MySQL 5.1 Referenzhandbuch :: 5.8.9 Kennwort-Hashing ab MySQL 4.1 Die Option --old-passwords beim MySQL-Server sollte dir helfen. Zitieren
Monty82 Geschrieben 25. April 2007 Geschrieben 25. April 2007 Alternativ kannst Du auch die Funktion OLD_PASSWORD() benutzen. $result = mysql_query ("select * from $table_user where username = '$wert1' and kennung = OLD_PASSWORD('$wert2')"); Oder einfach übergangsweise beides: ... AND ((length(kennung) = 41 AND kennung=PASSWORD('passwort')) OR (length(kennung) = 16 AND kennung=OLD_PASSWORD('passwort'))) Zitieren
pc-nico Geschrieben 25. April 2007 Autor Geschrieben 25. April 2007 ok, danke für die Tipps, werd die PHP dateien mal anpassen... mal ne andere Frage: wenn ich jetzt in der Datenbank für meinen User ein neues Passwort generiere, also mit der Passwortfunktion, dann kommt er einen langer Hash-Wert.... Dazu lasse ich die PHP Datei unangetastet... allerdings geht es dann trotzdem nicht... Obwohl mein User ja einen "neuen Langen" hashwert hat... ???? Zitieren
Monty82 Geschrieben 25. April 2007 Geschrieben 25. April 2007 Welchen Typ und welche Länge hat das Feld "kennung"? Zitieren
pc-nico Geschrieben 25. April 2007 Autor Geschrieben 25. April 2007 dong, da ist das Brett *g* Varchar(40) und für den langen Hash-Wert müssen es 41 Byte sein, stimmts??? Zitieren
pc-nico Geschrieben 25. April 2007 Autor Geschrieben 25. April 2007 ich danke euch wie immer für eure Hilfe und die Erweiterung meines Horizontes :D :uli :uli :uli Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.