Umlaute im Usernamen (German / Deutsch)
Hallo
Also habe ich die Funktion my_strtolower auf die Schnelle ein wenig modifizert:
function my_strtolower($string, $encoding='utf-8') { if(function_exists('mb_strtolower')) { return mb_strtolower($string, $encoding); } else { if ($encoding=='utf-8') { $string = utf8_decode($string); $string = strtolower($string); $string = utf8_encode($string); return ($string); } } }
sodass zumindest bei utf-8 das Richtige herauskommt.
Interessante Lösung, du hast dabei nur eines vergessen. Wenn als Encoding etwas anderes als UTF-8 an die Funktion übergeben wird (warum man das auch immer machen will) und die mb-Erweiterung nicht in PHP einkompiliert ist (womit die Funktion mb_strtolower
nicht vorhanden ist), wird überhaupt nichts gemacht.
Es muss also einen weiteren Zweig als Fallback geben. Mein Vorschlag:
function my_strtolower($string, $encoding='utf-8') { if (function_exists('mb_strtolower')) { return mb_strtolower($string, $encoding); } else if ($encoding=='utf-8') { $string = utf8_decode($string); $string = strtolower($string); $string = utf8_encode($string); return ($string); } else { return strtolower($string); } }
Falls die Funktion mb_strtolower
existiert, benutze Zweig 1, ist sie nicht da und das Encoding ist mit 'utf-8' angegeben[1], benutze Zweig 2, trifft beides nicht zu, benutze Zweig 3.
Klar ist, dass es an der Stelle "Einloggen" um sicherheitsrelevante Themen geht, daher wäre es nett, wenn sich die Entwickler (Alex?) die Sache noch einmal ansehen könnten.
Ich denke mal, dass er sich das zumindest anschaut.
[1] Sollte man für den Fall, dass jemand händisch 'UTF-8' (groß geschrieben) an die Funktion übergeben will, beim Stringvergleich auf 'utf-8' eventuell auch noch ein strtolower
anwenden? Zeichenkodierungsnamen sollten mWn alle ausschließlich mit ASCII-Zeichen geschrieben sein.
Tschö, Auge
--
Trenne niemals Müll, denn er hat nur eine Silbe!