2009-08-18 5 views
5

Ich verwende MySQL und PHP. In meiner Datenbank habe ich diese Tabelle users, und im Innern der users Tabelle hat einen Datensatz genannt:Ist PHP nicht Groß-und Kleinschreibung?

Benutzername: admin

Passwort: Passwort

In meiner Login-Seite habe ich versucht, melden Sie sich als (Passwort: Passwort):

  • Benutzername: ADMIN -> Ergebnis:
  • Benutzernamen anmelden können: admin -> Ergebnis: kann anmelden

Ich speicher den Benutzernamen in meiner Datenbank als "admin", alles Kleinbuchstaben.

In meiner PHP-Authentifizierungsseite habe ich die Funktion strtolower() nicht eingeschlossen. Bedeutet es in PHP, dass das von mir eingegebene Formularfeld "Benutzername" nicht zwischen Groß- und Kleinschreibung unterscheidet?

Antwort

11

Es ist nicht PHP. Es ist Ihre Datenbankabfrage, bei der die Groß-/Kleinschreibung nicht berücksichtigt wird.

Sie können einen der Operanden entweder binary string machen. Zum Beispiel:

SELECT 'abc' LIKE 'ABC'; 

Dies wird 1 oder true zurück. Während

SELECT 'abc' LIKE BINARY 'ABC'; 

wird 0 oder false zurück.

+5

Ja, MySQL unterscheidet standardmäßig nicht zwischen Groß- und Kleinschreibung. – TheJacobTaylor

+0

Huh ?? Kann mehr erklären? Mein aktuelles Skript: SELECT * FROM Benutzer WHERE username = '". Mysql_real_escape_string ($ _ POST [' Benutzername '])."' "; –

+0

Wie man es sensitiv macht? –

0

Wie sollte es wissen, dass es das Feld Benutzername ist?

Wenn ich mich recht erinnere, war in * nix ein Benutzername Groß-und Kleinschreibung. Verwenden Sie eine Bibliothek, um die Benutzerinformationen zu speichern und zu vergleichen?

+0

Ich reiche den Benutzernamen in 2 Versionen, 1 in Großbuchstaben, 1 in Kleinbuchstaben, können beide anmelden. Nein, ich habe keine Bibliothek benutzt, nur ein einfaches Login-Formular, das ich selbst erstellt habe –

-1

Wenn Sie sich anmelden, ich denke, Sie sollten Abfrage schreiben, um den Benutzernamen und das Passwort zu bestätigen sind die gleichen in der Tabelle, die Sie gespeichert haben.

+0

Meine Tabelle hat den Benutzernamen als "admin" gespeichert (alles Kleinbuchstaben), das heißt, in php muss ich strtolower() verwenden, um al zu konvertieren l Die Zeichenfolge in Kleinbuchstaben. Meinst Du das? Beruht auf Randells Antwort, die Groß-/Kleinschreibung nicht zu beachten, warum sollte ich dann wieder die strtolower() verwenden? Was sind die Ursachen, wenn ich die Funktion strtolower() nicht verwende? Kannst du bitte mehr ausarbeiten? –

+0

Ihre Antwort wurde abgelehnt, bedeutet das, dass ich die Zeichenfolge nicht in Kleinbuchstaben konvertieren muss? –

+0

Bitte verwenden Sie keine Codeformatierung, wenn Sie Text schreiben. – slaphappy

1

Ich denke, einigen Weg zu gehen, bevor es klar ist ...

MySQL ist nicht für Abfragen Groß- und Kleinschreibung. SELECT und select bedeuten dasselbe.

Die Daten in den Tabellen werden unverändert gespeichert. Da Sie jedoch nur Informationen mit Abfragen abrufen können, müssen Sie sie sorgfältig formulieren.

Wie Randell sagte

select 'abc' like 'ABC' 

TRUE zurückgeben wird (so wird SELECT 'abc' like 'ABC'), weil LIKE Fall Unterschiede

select 'abc' like binary 'ABC' 

wird FALSE zurück (und so wird SELECT 'abc' LIKE BINARY 'ABC') ignoriert, weil LIKE BINARY genauer aussieht.Es gibt einen Unterschied auf der binären Ebene.

Verwandte Themen