Avatar

Umlaute im Usernamen (German / Deutsch)

by Auge ⌂, Sunday, May 30, 2010, 14:45 (5086 days ago) @ Mathias

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. :waving:

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!


Complete thread:

 RSS Feed of thread