Umlaute im Benutzernamen (German / Deutsch)

by Mathias @, Tuesday, May 25, 2010, 14:55 (5090 days ago)

Hallo,

in unserem Forum hat sich ein User angemeldet, der Umlaute verwenden möchte. Das Einloggen klappt aber leider nicht. Sind Umlaute verboten oder liegt es an irgendeiner Einstellung?

Gruß,
Mathias

Umlaute im Benutzernamen ... funktionieren

by äöüß, Tuesday, May 25, 2010, 15:20 (5090 days ago) @ Mathias

- No text -

Umlaute im Benutzernamen ... funktionieren

by Mathias, Tuesday, May 25, 2010, 20:22 (5090 days ago) @ äöüß

Genau genommen meinte ich Umlaute bei angemeldeten Benutzern.

Umlaute im Benutzernamen ... funktionieren

by äöüß, Tuesday, May 25, 2010, 20:49 (5090 days ago) @ Mathias

Benutzer: äöüß
Passwort: äöüßäöüß

Umlaute im Benutzernamen ... funktionieren "eigentlich"

by Mathias, Wednesday, May 26, 2010, 06:08 (5090 days ago) @ äöüß

Guten Tag!
Danke für die Antwort. Sorry, dass ich noch einmal auf dem Thema herumreiten muss.

Ich habe einen Testaccount in diesem Forum angelegt, Name äöüä.
Die Aktivierungs-Mail habe ich daraufhin erhalten, der Aktivierungslink darin ist allerdings umgebrochen:

http://mylittleforum.net/forum/index.php?mode=3Dregister&id=3D1506&key=3DuU=
5XsukWwUvr5UjNQEyS


Ich habe die URL dann im Texteditor zusammengesetzt und aufgerufen, trotzdem kann ich den Account nicht aktivieren.

In meinem Forum (Ver. 2.1.4) klappt noch nicht einmal das manuelle Anlegen über die Benutzerverwaltung. Beim Login wird angezeigt: "Unbekannter Benutzername oder Passwort falsch!", als ob der Benutzer nicht existieren würde.

Könnte das eventuell ein Problem mit den Zeichensätzen im (von mir geänderten)Template sein? Ich verwende allerdings ebenfalls UTF-8.

Gruß,
Mathias

Umlaute im Benutzernamen ... funktionieren "eigentlich"

by Mathias, Wednesday, May 26, 2010, 07:13 (5090 days ago) @ Mathias
edited by Mathias, Wednesday, May 26, 2010, 07:33

So, ich habe noch mal ausgiebig getestet:

  • Am Template und dessen Zeichensatz liegt es nicht, ich habe mein Forum mal mit dem Originaltemplate laufen lassen und auch dort ist ein Einloggen mit Umlauten nicht möglich :-(
  • In der Datenbank ist der Benutzer korrekt eingetragen (phpmyadmin zeigt die Umlaute an)
  • Durch klick auf "Passwort vergessen" bekomme ich eine Mail mit korrekten Umlauten. Der MySQL-Server liefert den Benutzernamen also korrekt aus.
  • Ich habe auch mit verschiedenen Browsern getestet (Firefox und IE) -> kein Unterschied

Liegt es vielleicht an meiner (veralteten) Forumsversion (2.4.1)?
Hat jemand eine Idee?

Danke und Gruß, Mathias

PS: Ansonsten: MyLittleForum ein richtig gutes Foren-Skript! Wir haben knapp 23.000 Postings in über 4000 Threads (nach Übernahme aus einem anderen Forum) und die Schnelligkeit ist ungeschlagen :-) :-)

Avatar

Umlaute im Benutzernamen ... funktionieren "eigentlich"

by Alex ⌂, Wednesday, May 26, 2010, 15:13 (5089 days ago) @ Mathias

Hallo Mathias,

Hat jemand eine Idee?

Ich habe hier gerade einen Test mit einem Umlaut-Namen gemacht und es gab keine Probleme bei der Registrierung. Wenn Du das Problem auch in diesem Forum hattest, liegt es vermutlich am Mail-Anbieter bzw. dessen Webmailer (Webmailer machen gerne mal irgendwelche Umformatierungen). Vor einer Weile habe ich einige Mail-Programme (Thunderbird, Outlook, Opera, Evolution, ...) und Webmailer (Yahoo, Gmail, Web.de, Horde-Imp, Roundcube, Confixx, ...) getestet und die E-Mails sollten eigentlich auch RC-konform formatiert sein.

Alex

Umlaute im Benutzernamen ... funktionieren "eigentlich"

by Mathias, Wednesday, May 26, 2010, 18:38 (5089 days ago) @ Alex

Hallo Alex,

danke für Deine Antwort.

Das Freischalteproblem scheint nur bei Usernamen zu existieren, die Umlaute enthalten. In meinem Forum melden sich laufend Leute an, und die scheinen keine Probleme zu haben (weil sie keine Umlaute verwenden). Wenn ich Umlaute weglasse, kann ich mich auch problemlos anmelden und freischalten.

Bleibt noch das Login-Problem. Wenn ich Umlaut-Benutzer von Hand eintrage und freischalte, können diese sich nicht anmelden, weder in meinem noch im Standard-Template. In diesem Forum klappt es aber anscheinend reibungslos. :confused: Das ist bestimmt wieder so ein Zeichensatzproblem. Aber im Quelltext steht ja überall utf-8, es sollte also funktionieren. Woran liegt es bloß...

Mathias

Avatar

mail_header_separator

by Alex ⌂, Wednesday, May 26, 2010, 20:53 (5089 days ago) @ Mathias

Nochmal zu den Mails:
Du könntest mal versuchen, in includes/functions.inc.php die Zeile

$mail_header_separator = "\r\n"; // try to use "\n" if messages are not sent (see http://php.net/manual/en/function.mail.php)

in

$mail_header_separator = "\n"; // try to use "\n" if messages are not sent (see http://php.net/manual/en/function.mail.php)

zu ändern.

Alex

Umlaute im Usernamen

by Mathias, Thursday, May 27, 2010, 07:50 (5089 days ago) @ Alex
edited by Mathias, Thursday, May 27, 2010, 07:59

Guten Morgen,

ich habe mich mal durch den Quellcode gekämpft und mittels Trial & Error den Fehler gefunden:
Anscheinend kennt mein PHP-Interpreter die Funktion mb_strtolower nicht und die Funktion "my_strtolower" in der functions.inc.php (Zeile 1953ff) versucht stattdessen dann ein "strtolower", welches den Zeichensatz nicht beachtet.:-|

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

Viele Grüße,
Mathias

PS: Duch meinen kleinen "Hack" funktioniert nun auch die Aktivierungsmail bei Umlauten :ok:

Avatar

Umlaute im Usernamen

by Auge ⌂, Sunday, May 30, 2010, 14:45 (5085 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!

Umlaute im Usernamen

by Mathias, Sunday, May 30, 2010, 18:41 (5085 days ago) @ Auge

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:

...

Hallo Auge,

ah, stimmt: Du hast natürlich Recht.
Es war wirklich nur auf die Schnelle dahinprogrammiert.

Gruß,
Mathias

Avatar

Umlaute im Usernamen

by Auge ⌂, Friday, June 04, 2010, 11:35 (5081 days ago) @ Mathias

Hallo

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:


ah, stimmt: Du hast natürlich Recht.
Es war wirklich nur auf die Schnelle dahinprogrammiert.

Ist ja kein Problem. Du hast das für dich geändert, weil du ja das Einsatzszenario kennst. Du wirst nicht die Kodierung von utf-8 auf etwas anderes ändern, der Funktion keine andere Kodierung als Parameter übergeben ... also wird deine Lösung für dich in jedem Fall funktionieren, da in der Funktion utf-8 als Standard gesetzt ist.

Falls jemand, dessen Schriftsystem nicht in utf-8 enthalten ist (soll es wohl geben), die Forumssoftware benutzen will, sollte das Fallback aber da sein. Allerdings bedürfte dann aber die Software ansich vermutlich einer größeren Überarbeitung. Das ist aber für uns kein Thema. :-)

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!

RSS Feed of thread