Veröffentlicht 17. März 200421 j 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??
17. März 200421 j Nimm deren Emailadresse als Benutzername (wie bei Amazon), dann hast du die Probleme nicht. Emailadressen dürfen ja diese Zeichen nicht enthalten. Beim PW könntest du übrigens das gleiche Problem bekommen. Es sei denn du wandelst es vor dem Eintrag in einen Hash-Wert um und vergleichst das später nur noch.
17. März 200421 j Keine schlechte Idee, aber ich möchte auch die möglichkeit, dass Benutzer sich im Nachhinein ihre Zugangsdaten zuschicken lassen können, wenn ich das PW nur als Hashwert abspeichere, dann kann ich das ja nicht oder? Timo
17. März 200421 j Ist ja kein Problem, wenn jemand sein PW vergessen hat mach folgendes: Trag ein Zufalls-PW als Hash in die DB ein und schick ihm das neue PW zu. Später kann er das ja ändern.
18. März 200421 j Ich bin vielleicht ein bischen spät dran, aber gebe trotzdem noch meinen Senf dazu. 1. Probleme beim Eintragen von String mit Sonderzeichen können mittels einer PHP-Funktion präpariert werden, nennt sich (addslashes()) - damit werden die Sonderzeichen als Escape-Sequenzen codiert. 2. Schon mal auf die Idee gekommen als Encoding UTF-8 zu nehmen? 3. Die anderen Ansätze sind auf jeden Fall eine Alternative!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.