Unterscheidung Groß- und Kleinschreibung

2Pac

Erfahrenes Mitglied
Hallo!

Ich habe eine Userdatenbank, für welche sich die User selbstständig anmelden können per PHP Script versteht sich.

Dazu schreibe ich die Namen in die Datenbank und kontrolliere vorher, ob dieser Name schon vergeben ist. Man sagte mir, dass ich die Klein- und Großschreibung unterscheiden kann indem ich die Spalte aus der Tabelle binary setze. Das habe ich getan über den Dateityp blob.

Jetzt jedoch kann sich ein User mehrfach mit dem selben Namen anmelden und es wird nicht erkannt, dass dieser bereits existiert.

Was mache ich falsch bzw. was sollte ich anders machen, da es mir sehr wichtig ist, keine Doppelnamen zuzulassen, da sonst Fehler in den anderen Scripten von meinen Turniere auftreten.

Das ganze ist mir heute aufgefallen, als ich die Teilnehmerliste angesehen habe und auf einmal ein User komischerweise doppelt auftauchte.

Denn dieser war doppelt mit haargenau dem selben Nicknamen registriert.

Wäre sehr dankbar über jede Hilfe.

mfg 2Pac
 
Die Frage ist wohl, wie prüftst du in deinem Skript, ob der User schon existiert?

Ich denke, das hat erstmal nichts mit der Unterscheidung von Groß- und Kleinschreibung zu tun. Du solltest entweder den Usernamen als UNIQUE KEY setzen, dann läuft MySQL auf einen Fehler, wenn du den gleichen Index nochmal anlegst. Du müsstest dann den MySQL abfangen und eine sinnvolle Fehlermeldung an den User ausgeben.

Etwas einfacher wäre vieleicht, wenn du bei der Anmeldung zunächst per SELECT abfragst, ob der Username schon vorhanden ist. Wenn Ja, gib eine Fehlermeldung aus, wenn nein, lege den User neu an. Diese Variante hat den Nachteil, dass du die Tabelle zwischen SELECT und INSERT locken musst, damit du keine race-condition bekommst.

Gruß

Marian
 
Andere Frage: Warum sind die Usernamen so wichtig? Eigentlich solltest du in deiner Tabelle einen Primary Key (vermutlich Integer) haben, der den User eindeutig identifiziert. Und wenn du in all den anderen Scripten auch mit diesem Key arbeiten würdest, hättest du keinerlei Probleme mit mehrfach vorkommenden Usernamen. (Die Überprüfung auf einen allfällig schon vorhandenen User mit dem gleichen Namen ist dann nicht mehr zwingend notwendig, du kannst sie aber natürlich trotzdem weiterhin drinlassen, falls du nicht mehrere User mit dem gleichen Namen willst.)
 
Obwohl meistens ein künstlicher Primärschlüssel zur Identifizierung genutzt wird, hättest du, SilentWarrior, doch sicherlich auch etwas dagegen, wenn hier im Forum noch jemand SilentWarrior nennen würde – egal welche Schreibweise. Hierfür einen Spaltentyp einzusetzen, bei dem die Groß- und Kleinschreibung beachtet wird, würde dem nur entgegenwirken.
 
Gumbo hat gesagt.:
Obwohl meistens ein künstlicher Primärschlüssel zur Identifizierung genutzt wird, hättest du, SilentWarrior, doch sicherlich auch etwas dagegen, wenn hier im Forum noch jemand SilentWarrior nennen würde – egal welche Schreibweise. Hierfür einen Spaltentyp einzusetzen, bei dem die Groß- und Kleinschreibung beachtet wird, würde dem nur entgegenwirken.
Es hängt, wie ich bereits angedeutet habe, vom Einsatzzweck ab. In einem Forum wäre dies definitiv nicht angebracht, da es zu Verwirrung führen könnte. Wenn aber beispielsweise bei einem Instant Messenger wie ICQ noch hundert andere User SilentWarrior heissen, stört mich das kein Stück.
 
Zurück