Foros del Web » Programando para Internet » PHP »

Nombres de usuario en Mayuscula o Minuscula (case unsensitive) con PHP? o con SQL?

Estas en el tema de Nombres de usuario en Mayuscula o Minuscula (case unsensitive) con PHP? o con SQL? en el foro de PHP en Foros del Web. Hola, Quisiera que en mi sitio los nombres de usuario no sean CASE SENSITIVE. Asi, si un usuario se registra como "Alberto", podria autentificarse como ...
  #1 (permalink)  
Antiguo 21/08/2005, 22:46
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Nombres de usuario en Mayuscula o Minuscula (case unsensitive) con PHP? o con SQL?

Hola,

Quisiera que en mi sitio los nombres de usuario no sean CASE SENSITIVE. Asi, si un usuario se registra como "Alberto", podria autentificarse como "ALBERTO", o "Alberto" o "alberto" o lo que sea...
Asi mismo, cuando alguien quiera registrarse con el nombre alBeRtO, (sin importar el case) le de error.

¿Esto como lo hago? ¿Controlandolo en el momento de hacer la consulta SQL? ¿O cuando tomo los datos hago algo con PHP?

Vi algunas funciones en PHP como EREGI_REPLACE pero es mega-pesada lei por ahi. ¿Que me podrian recomendar?


Un saludo y muchisimas gracias
  #2 (permalink)  
Antiguo 22/08/2005, 05:45
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 21 años, 10 meses
Puntos: 1
Buenas...

en un principio en mysql si haces una consulta del tipo...

Código PHP:
WHERE user='$_POST["user"]' 
no es sensible a mayúsculas minusculas cuando haces un select..si queires q lo sea...

mirate esto...

http://dev.mysql.com/doc/mysql/en/case-sensitivity.html

hay q retocar la definición de la tabla...

entonces si alguien se autentifica con su suario ponga como lo ponga no hay problema y para usuariso nuevos pues haces un select..si ya existe..como no es case sensitive segur oq te lo encuentra...

así q solucionado...

otra cosa...no estoy seguro pero es posible q si a la columna user le pones la restriccion unique..es posible q sea case insensitive..pero no estoy seguro..

bueno lo acabo de comprobar..creando una tabla y en efecto es case insensitve osease..q no deja poner 'Alberto' si ya existe un usuario 'alberto'

otra cosa más...

también decirte q se utiliza mucho la función strtoupper() para hacer comparaciones.

Salu2.
  #3 (permalink)  
Antiguo 23/08/2005, 21:05
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
LOTUS agradesco muchisimo tu respuesta, me ha sido de gran ayuda!!

Un saludo grande.
  #4 (permalink)  
Antiguo 23/08/2005, 21:29
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Ouch... lamento insistir. Crei que habia funcionado pero no es asi.

Te muestro como hago en mi script de "LOGIN":

Código PHP:
...    
    if( (
$user $_POST['user']) != "" || ($pass $_POST['pass']) != "") {
    

    
$password md5($pass);

    include(
$_SERVER['DOCUMENT_ROOT'].'/include/bd.php');

    
$link conectar_bd();
    
$sql "select * from usuarios where user = '$_POST[user]' and p_hash = '$password'";
    
$query mysql_query($sql) or die('Imposible realizar consulta!');    
... 
Originalmente hacia en el query: "... WHERE user = '$user'...", pero el problema es que no tengo modo de poner $_POST[user] con el "user" entre comillas.

Igualmente, intente sin comillas y falla.

Tambien intente cambiar el tipo de campo para la tabla USUARIOS / campo "USER"...

Hay algun otro "Sub nivel" de comillas aparte de : ("nivel 1") ('nivel 2') ?

Mil gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 12:08.