Timo Haberkern: [MySQL/PHP] Ausländische Sonderzeichen in SELECT QUERIES

Hallo zusammen,

ich hab ein kniffliges Problem. Ich habe einen passwortgeschützten Bereich auf einer Homepage. Benutzer müssen sich anmelden um dort zugang zu bekommen. Jetzt gibt es Benutzer (z.B. aus Polen, Russland usw.) die habe Sonderzeichen in den Namen. Wenn ich diese jetzt per Insert in ein Datenbankfeld schreibe, dann kommen die natürlich "verstümmelt" an. Das ist soweit kein Problem, wenn ich die Auslese und mit der richtigen Content-Type Codierung versehe (z.B. meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"), dann sieht das richtig aus.

Mein Problem ist jetzt aber mein Login-Script, Dort mache ich eine Abfrage, ob der Benutzer mit dem Benutzername und Passwort existiert. D.h.

$query = "select * from user where strPassword = '$Password' AND strUserName = '$UserId'";

In $UserId steht aber natürlich der Benutzername so drin, dass z.B. osteuropäische Sonderzeichen drin sind. Wenn ich dann mein Query ausführe bekomme ich kein Ergebniss, obwohl der Benutzer in der Datenbank drin ist!

Weiss einer eine Lösung dafür??

Timo

  1. also, wenn ich eine quick-and-dirty lösung wollen würde, würde ich die namen mit htmlentities() kodiert hineinschreiben (oder nachträglich durch ein script ersetzen) und sie einfach mit dieser option auch wider abfragen.

    $query = "select * from user where strPassword = '$Password' AND strUserName = '".htmlentities($UserId).'";

    allerdings steht dann nicht der 'reine' inhalt in der datenbank, und man müsste sich immer dran erinneren (bei einer ausgabe ausserhalb von html), dass man den namen mit der funktion html_entity_decode() zurückübersetzen muss.

    hmmmmm.... ich arbeite mit ner oracle datenbank, sonderzeichn in abfragen sind da nicht wirklich ein problem. vielleicht gibts ne einstellung fürn zeichensatz bei mysql. nährers weis ich leider nit.

    viel glück noch
    mfg
    bauchidgw