2009-08-18 30 views
5

Estoy usando MySQL y PHP. En mi base de datos tengo esta tabla llamada users, y dentro de la tabla users tener un registro:¿PHP no distingue entre mayúsculas y minúsculas?

el usuario: admin

contraseña: contraseña

en mi página de inicio de sesión, he intentado registrado como (contraseña: contraseña):

  • nombre de usuario: ADMIN -> resultado: puede iniciar sesión
  • el usuario: admin -> resultado: se puede iniciar sesión

Guardo el nombre de usuario en mi base de datos como "admin", todo en minúsculas.

En mi página de autenticación de PHP, no incluí la función strtolower(). ¿Significa que en PHP el campo de formulario de nombre de usuario que envié no distingue entre mayúsculas y minúsculas?

Respuesta

11

No es PHP. Es su consulta de base de datos que no distingue entre mayúsculas y minúsculas.

Puede hacer uno de los operandos cadena binaria. Por ejemplo:

SELECT 'abc' LIKE 'ABC'; 

Esto devolverá 1 o true. Mientras

SELECT 'abc' LIKE BINARY 'ABC'; 

regresará 0 o false.

+5

Sí, MySQL no distingue entre mayúsculas y minúsculas por defecto. – TheJacobTaylor

+0

Huh ?? Puede explicar mas? Mi script actual: SELECCIONAR * FROM usuarios WHERE username = '". Mysql_real_escape_string ($ _ POST [' username '])."' "; –

+0

Cómo hacerlo sensible ?? –

0

¿Cómo debe saber que es el campo de formulario de nombre de usuario?

Si mal no recuerdo, en * nix un nombre de usuario no distingue entre mayúsculas y minúsculas. ¿Estás usando una biblioteca para almacenar la información del usuario y compararla?

+0

presento el nombre de usuario en 2 versiones, 1 en mayúsculas, 1 en minúsculas, ambas pueden iniciar sesión. No, no utilicé ninguna biblioteca, solo un formulario de inicio de sesión simple que creé yo mismo –

-1

Cuando inicie sesión, creo que debe escribir la consulta para validar el nombre de usuario y la contraseña son los mismos en la tabla que se ha guardado.

+0

Mi tabla almacenaba el nombre de usuario como "admin" (todo en minúscula), eso significa, en php, necesito usar strtolower() para convertir todo l la cadena a minúsculas. ¿Es eso lo que quieres decir? Basado en la respuesta de Randell, no distingue entre mayúsculas y minúsculas, entonces ¿por qué debería usar strtolower() nuevamente? ¿Cuáles son las causas si no uso la función strtolower()? ¿Puedes elaborar más por favor? –

+0

Su respuesta ha sido rechazada, ¿significa que no necesito convertir la cadena a minúsculas? –

+0

No use formato de código cuando escribe texto. – slaphappy

1

creo que tiene mucho camino por recorrer antes de que sea clara ...

MySQL no es sensible para las consultas. SELECCIONAR y seleccionar significan lo mismo.

Los datos de las tablas se almacenan como están, pero como solo se puede obtener información con consultas, se deben redactar con cuidado.

Como Randell dijo

select 'abc' like 'ABC' 

devolverá true (también lo hará SELECT 'abc' like 'ABC') porque al igual que ignora las diferencias casos

select 'abc' like binary 'ABC' 

devolverá FALSE (y también lo hará SELECT 'abc' LIKE BINARY 'ABC') porque como BINARIO se ve con más cuidado.Hay una diferencia en el nivel binario.

Cuestiones relacionadas