Groß und Kleinschreibungs-Daten in Datenbank ignorieren

Ich habe ein Loginsystem. Doch jeder kann sich nur so mit dem Benutzernamen bzw. passwort einloggen, wie er es bei der Registrierung eingegeben hat (groß und kleinschreibung).
Ich möchte aber, dass Groß und Kleinschreibung egal ist. Also auch z.B. ADmIN.

Wie gehts das?

denn lass die buchstaben vorher alle klein oder groß umformen und speicher es so inne datenban nd vergleich die namen denn

Genau, das kannst du dann mit strtolower() machen.

Könnt ihr mir da den Code schreiben^^ :hammer:

kannst den quellcode posten?

musst einmal an der stelle wo das passwort generiert/ausgelesen wird und da wo er beim einloggen das passwort mit dem in der datenbank vergleicht den passwortstring umformen.

$passwort = strtolower($passwort);

Ich würde in der Datenbank zwei Felder anlegen, eines mit dem strtoupper() Benutzernamen, und eines mit dem richtigen Benutzernamen, da viele User ihre Benutzernamen kunstvoll mit Groß/kleinschreibung gestalten. Beim überprüfen des Usernamens benutzt du dann den strtoupper() Wert des Textfeldes und vergleichst ihn mit dem strtoupper() Feld deiner Datenbank.

Nein, sowas ist eine ganz ganz schlechte Idee, man speichert in Datenbanken keine zwei Werte die auseinander abgeleitet werden können, ausser es lässt sich unter garkeinen Umständen vermeiden (was so gut wie nie der Fall ist).

Selects in mysql mit stringvergleichen sind eh fast immer case-insensitive von daher sollte das auf der Datenbankseite eh kein Problem sein; scripte lassen sich mit einem toupper oder tolower wie gesagt leicht anpassen.

dev.mysql.com/doc/refman/5.0/en/ … ivity.html ist hier vielleicht noch interessant.

Abfragen sind sowieso immer case insensitive. Das kann man mit “BINARY” ändern - aber das willst du ja nicht :smiley: müsste eigentlich auch so gehen alles - passwort ist natürlich richtig dass das case sensitive ist. das hängt aber damit zusammen dass eine md5 summe mit einem kleinen buchstaben anders als mit einem großen buchstaben ist