2009-08-18 13 views
5

Sto usando MySQL e PHP. Nel mio database ho questa tabella chiamata users, e all'interno della tabella users avere un record:PHP non fa distinzione tra maiuscole e minuscole?

nome utente: admin

password: password

nella mia pagina di login, ho cercato di login come (password: password):

  • nome utente: ADMIN -> risultato: può accedere
  • nome utente: admin -> risultato: può accedere

Memorizzo il nome utente nel mio database come "admin", tutto in minuscolo.

Nella mia pagina di autenticazione PHP, non ho incluso la funzione strtolower(). Significa che in PHP il campo del modulo nome utente che ho inviato non è sensibile al maiuscolo/minuscolo?

risposta

11

Non è PHP. È la query del database che non fa distinzione tra maiuscole e minuscole.

È possibile creare una stringa binario di operandi. Per esempio:

SELECT 'abc' LIKE 'ABC'; 

Ciò restituirà 1 o true. Mentre

SELECT 'abc' LIKE BINARY 'ABC'; 

tornerà 0 o false.

+5

Sì, MySQL non fa distinzione tra maiuscole e minuscole per impostazione predefinita. – TheJacobTaylor

+0

Eh ?? Puoi spiegare di più? Il mio script attuale: SELEZIONA * DAGLI utenti DOVE username = '". Mysql_real_escape_string ($ _ POST [' username '])."' "; –

+0

Come rendere sensato lo –

0

Come si deve sapere che è il campo modulo nome utente?

Se ricordo bene, in * nix un nome utente non faceva distinzione tra maiuscole e minuscole. Stai usando una libreria per archiviare le informazioni utente e per confrontarle?

+0

invio il nome utente in 2 versioni, 1 in maiuscolo, 1 in minuscolo, entrambi possono accedere. No, non ho usato nessuna libreria, solo un semplice modulo di login che ho creato da me –

-1

Quando si effettua il login, penso che si dovrebbe scrivere query per convalidare nome utente e password sono gli stessi nella tabella che è stata salvata.

+0

La mia tabella ha memorizzato il nome utente come "admin" (tutto in minuscolo), questo significa, in php, ho bisogno di usare strtolower() per convertire l la stringa in lettere minuscole. È questo che vuoi dire? In base alla risposta di Randell, che non fa distinzione tra maiuscole e minuscole, quindi perché dovrei usare nuovamente strtolower()? Quali sono le cause se non uso la funzione strtolower()? Puoi elaborare di più per favore? –

+0

La tua risposta è stata annullata, vuol dire che non ho bisogno di convertire la stringa in minuscolo? –

+0

Si prega di non utilizzare la formattazione del codice quando si scrive del testo. – slaphappy

1

penso che hanno molta strada da fare prima che sia chiaro ...

MySQL non è case sensitive per le query. SELEZIONA e seleziona significa la stessa cosa.

I dati nelle tabelle vengono memorizzati così come sono, ma dal momento che è possibile ottenere solo le informazioni con le query, è necessario formularle con attenzione.

Come Randell detto

select 'abc' like 'ABC' 

restituirà true (così sarà SELECT 'abc' like 'ABC') perché, come ignora le differenze di casi

select 'abc' like binary 'ABC' 

restituirà FALSE (e così sarà SELECT 'abc' LIKE BINARY 'ABC') perché come BINARIO guarda con più attenzione.C'è una differenza a livello binario.

Problemi correlati