Nach UTF8-Umstellung funktionieren alte Passwörter mit Sonderzeichen nicht mehr


#1

Hallo zusammen,

nach der Umstellung unseres Shops (PE 4.9.4) kann man sich leider nicht mehr mit alten Passwörtern einloggen, welche Sonderzeichen enthalten.

Exakt nach Anleitung haben wir nun Folgendes gemacht:

  • Die Datenbank mit dem von Oxid bereitgestellten SQL von ISO-8859-15 auf UTF-8 umgestellt. (alle SQL-Anweisungen liefen fehlerfrei durch)

  • Das update.php ist ebenfalls erfolgreich durchgelaufen und am Schluss auf der Kontrollübersicht sah alles perfekt aus.

-config.inc.php auf utf-8 umgeschaltet
$this->iUtfMode = ‘1’;

-tmp-Verzeichnis geleert

Solange man sich nicht mit einem alten Sonderzeichen-Passwort einloggen möchte, funktioniert das Frontend auch einwandfrei.
Leider kann man sich allerdings weder im Frontend noch im Backend mit einem (alten Sonderzeichen-Passwort) anmelden.
Das Passwort mit Sonderzeichen funktionierte vor der Utf8-Umstellung perfekt.

Passwörter ohne komplizierte Sonderzeichen funktionieren nach der Umstellung weiterhin.
Nun kommt immer die Meldung das Passwort sei fehlerhaft.

Die Haswerte oxpassword in der Tabelle oxuser sind optisch unverändert. Die Spalte oxpassword ist nach der Umstellung allerdings utf8-general-ci.

[B]Wieso akzeptiert oxid nach der Umstellung keine alten Passworthashes mit Sonderzeichen?
Ist dies ein Bug oder wie kann man es beheben?
[/B]

Schon einmal im Voraus vielen Dank für eure Mühe
Stefan


#2

Liegt wohl daran dass das Formular nach der Umstellung in UTF-8 ist. Du könntest in oxuser beim Passwort utf8_decode ausführen, so dass beide Versionen funktionieren:


        $sPassSelect = " (oxuser.oxpassword = " . $oDb->quote($this->encodePassword($sPassword, $sSalt)).
        " OR oxuser.oxpassword = " . $oDb->quote($this->encodePassword(utf8_decode($sPassword), $sSalt)).")";

#3

Hallo Frank,

vielen vielen Dank für die Antwort und deinen total genialen Tipp :). Da muss man erst mal drauf kommen…

Ich werde das sofort ausprobieren.
Viele Grüße
Stefan


#4

Der thread ist zwar schon älter, aber ich habe dasselbe Problem wie Stefan nach der utf-8 Umstellung einer CE 4.10.7. Ich habe also versucht, die von leofonic beschriebene Lösung anzuwenden und in der oxuser.php in application/models die Zeile $sPassSelect durch die oben stehende ersetzt.
Leider geht das login mit dem Sonderzeichenpasswort bei mir trotzdem nicht.
Habe ich etwas falsch gemacht, oder hat jemand die Lösung schon angewendet?
Danke schon mal jetzt für Eure Hilfe
Mignon


#5

Habe meinen Feher gefunden: Denn Code in der richtigen Zeile 1301 eintragen, dann funktionniert das login mit dem alten Sonderzeichenpasswort einwandfrei.
Vielen Dank an leofonic!
Mignon