Hallo dedlfix,
nochmals herzlichen Dank für deine Mühe und Testreihe.
War sehr aufschlussreich.
Nur noch als Info.
Ich hatte bereits nach der Umstellung auf UTF8 die Tabelle "webusers" in der die Anwender mit Loginname und Passwort drin stehen entsprechend angepasst.
So hatte ich die Spalte "loginname" auf varchar(200) und Collation utf8_bin eingestellt. Die Spalte pwd hatte ich auf varbinary(200) gestellt. Die Passwörter speichere ich AES_ENCRYPT(), daher varbinary.
Bei einem Login mache ich dann:
$DBO->prepare("SELECT count(*) as usercount FROM webusers WHERE loginname = :usr AND pwd = AES_ENCRYPT(:pwd,@pswd_key)
Warum der Login zuerst nicht ging lag in der Tat an deinem zu Recht bemängelten
$DBO->query("SET CHARACTER SET 'utf8'");
Macht man zusätzlich zu SET Names utf8 noch character SET:
$DBO->query("SET NAMES 'utf8'");
$DBO->query("SET CHARACTER SET 'utf8'");
braucht man unbedingt;
$DBO->query("SET collation_connection = utf8_unicode_ci");
Lass ich jedoch beides weg, also nur
$DBO->query("SET NAMES 'utf8'");
klappt der Login auch mit Umlaute im Passwort und Usernamen problemlos.
vielen Dank und viele Grüße
hawk