Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-12-2015
Gusso Gusso is offline
Miembro
NULL
 
Registrado: oct 2015
Posts: 11
Poder: 0
Gusso Va por buen camino
Login y Diferenciar Mayúsculas, Minúsculas, Acentos.. ETC

Buenas Noches Colegas!!

Nuevamente solicitando de su valiosa ayuda....

Les cuento tengo un programa donde la ventana principal es un login, ya lo tengo funcionando, el único problema que tengo es que no diferencía entre mayúsculas y minúsculas (es decir uso un password almacenado como "Hola", pero si escribo todo con mayúscula o minúscula aún me da acceso, quisiera saber como puedo hacer para que solicite que el password lo escriba exactamente como se almaceno), uso una BD MySQL almacenada como varchar, ya intenter como tipo BLOB pero tuve problemas no pude hacer ningun login ¿Alguna sugerencia? De ante mano agradezco su ayuda
Responder Con Cita
  #2  
Antiguo 14-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pon el código que lo veamos
Responder Con Cita
  #3  
Antiguo 14-12-2015
Gusso Gusso is offline
Miembro
NULL
 
Registrado: oct 2015
Posts: 11
Poder: 0
Gusso Va por buen camino
Codigo

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pon el código que lo veamos
Aqui esta mi codigo lo ejecuto un boton "aceptar"
Código Delphi [-]
procedure TForm1.IniciarClick(Sender: TObject);
begin
with datamodule2 do
begin
ql.SQL.Text:='Select idEmpleados, Password, AreaTrab from empleados where AreaTrab=:"box" and idEmpleados=:log and Password=:"pass"';
ql.Parameters.ParamByName('log').Value:=Edit1.Text;
ql.Parameters.ParamByName('pass').Value:=Edit2.Text;
ql.Parameters.ParamByName('box').Value:=Box.Text;
ql.Open;
  if ql.RecordCount=1 then
    begin
      ShowMessage('BIENVENIDO');
      Form1.hide;
      //Form3.Show;
        if box.Text= 'Medicina' then Form3.Show;
        if box.Text= 'Farmacia' then Form7.Show;
        if box.Text= 'Administrativo' then Form8.Show;
    end
    else
      begin
        ShowMessage('Error en usuario y/o contraseña');
        e:=e+1;
      end;
if e=3 then
  begin
    Button2.Click;
  end;
edit2.Text:='';
end;

Última edición por Casimiro Notevi fecha: 14-12-2015 a las 13:47:44.
Responder Con Cita
  #4  
Antiguo 14-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código Delphi [-]
ql.SQL.Text:='Select idEmpleados, Password, AreaTrab from empleados where AreaTrab=:"box" and idEmpleados=:log and Password=:"pass"';
Para empezar, quita esas comillas de los parámetros.
Código Delphi [-]
ql.SQL.Text:='Select idEmpleados, Password, AreaTrab from empleados where AreaTrab=:box and idEmpleados=:log and Password=: pass';

Y recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #5  
Antiguo 15-12-2015
Gusso Gusso is offline
Miembro
NULL
 
Registrado: oct 2015
Posts: 11
Poder: 0
Gusso Va por buen camino
Muchas gracias, lo hare... pero alguna sugerencia con mi problema?
Responder Con Cita
  #6  
Antiguo 15-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Gusso Ver Mensaje
Muchas gracias, lo hare... pero alguna sugerencia con mi problema?
Pero si te he puesto la solución
Responder Con Cita
  #7  
Antiguo 15-12-2015
Gusso Gusso is offline
Miembro
NULL
 
Registrado: oct 2015
Posts: 11
Poder: 0
Gusso Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero si te he puesto la solución
Pero el quitar las comillas no me resolvio mi problema, aun sigue sin diferenciar en el password minusculas y mayusculas, y en el RAD 10 studio no tengo esta opcion en el tag u.u, quede igual, disuculpen... pero aun soy novato
Responder Con Cita
  #8  
Antiguo 15-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero en box.text qué valor hay? ¿no lo convertirás todo a mayúsculas, por ejemplo, al guardarlo y al leerlo?
Es que no vemos más que el trozo de código que has puesto, tenemos que intentar adivinar.
¿Has seguido el programa con el debug para ver qué valor hay en box.text y en la base de datos?
Responder Con Cita
  #9  
Antiguo 15-12-2015
Gusso Gusso is offline
Miembro
NULL
 
Registrado: oct 2015
Posts: 11
Poder: 0
Gusso Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Pero en box.text qué valor hay? ¿no lo convertirás todo a mayúsculas, por ejemplo, al guardarlo y al leerlo?
Es que no vemos más que el trozo de código que has puesto, tenemos que intentar adivinar.
¿Has seguido el programa con el debug para ver qué valor hay en box.text y en la base de datos?
Cierto debi ser mas espécifico, mil disculpas, el box.text es un combobox, pero ese no es el problema, en el edit2.text es el campo donde se escribira la contraseña, ahora en mi BD de MySQL tengo este campo Password como varchar... no quiero convertir a mayusculas, quiero saber como puedo hacer que se solicite la contraseña exactamente como se almaceno en la BD, es decir si escribo como Password "HoLa" que se escriba exactamente para que permita el acceso, ya que asi como tengo funcionando mi software si da acceso, pero no diferencia entre mayusculas y minusculas el password, no se si me explico, lo que pasa es que no tengo aún permitido subir imagenes en mis redacciones aqui en el foro, pero finalmente, es un form con los campos usuario y contraseña
Responder Con Cita
  #10  
Antiguo 15-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bien, entonces insisto,
1. Lo guardado en la base de datos ¿está en mayúsculas, minúsculas o tal y como se tecleó? míralo y asegúrate.
2. Lo tecleado en edit1 y edit2 ¿está en mayúsculas, minúsculas o tal y como se tecleó? míralo y asegúrate.

Debes poner un 'breakpoint' antes de q1.Open, por ejemplo, y mira qué valor tiene.

Última edición por Casimiro Notevi fecha: 15-12-2015 a las 13:04:27.
Responder Con Cita
  #11  
Antiguo 15-12-2015
Gusso Gusso is offline
Miembro
NULL
 
Registrado: oct 2015
Posts: 11
Poder: 0
Gusso Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Bien, entonces insisto,
1. Lo guardado en la base de datos ¿está en mayúsculas, minúsculas o tal y como se tecleó? míralo y asegúrate.
2. Lo tecleado en edit1 y edit2 ¿está en mayúsculas, minúsculas o tal y como se tecleó? míralo y asegúrate.

Debes poner un 'breakpoint' antes de q1.Open, por ejemplo, y mira qué valor tiene.

Asi es, la BD el usuario es numeral, entonces no tengo problema con este... en el password la BD esta almacenado como Hola, la "H" es mayuscula, pero escribo "hola" asi en minuscula aún me da acceso... y bueno ¿como es el breakpoint?
Responder Con Cita
  #12  
Antiguo 15-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pones el cursor en la línea indicada. Le das a F5 y luego ejecutas el proprama. Se detendrá en esa línea y puedes poner la flecha del ratón encima de las distintas variables para ver sus valores.
Responder Con Cita
  #13  
Antiguo 15-12-2015
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola,

Aparte de hacer el debug como te indican y verificar como estás pasando los parámetros, abres la consulta y validas el resultado debes tener en cuenta un detalle de seguridad y en este caso es no almacenar contraseñas en texto en la DB.

Puedes usar muchos métodos. Uno sencillo en MySQL sería guardar el hash MD5 en lugar de la contraseña al momento de crear el usuario y al validar calculas el MD5 de la contraseña ingresada y lo validas con lo almacenado en la DB.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #14  
Antiguo 15-12-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Como esta el collate del campo de la BD?

Revisa esto

Edito:

Otra forma

Código SQL [-]
SELECT * FROM `table` WHERE BINARY `column` = 'value'

Última edición por AgustinOrtu fecha: 15-12-2015 a las 15:49:35.
Responder Con Cita
  #15  
Antiguo 16-12-2015
Gusso Gusso is offline
Miembro
NULL
 
Registrado: oct 2015
Posts: 11
Poder: 0
Gusso Va por buen camino
Cita:
Empezado por AgustinOrtu Ver Mensaje
Como esta el collate del campo de la BD?

Revisa esto

Edito:

Otra forma

Código SQL [-]SELECT * FROM `table` WHERE BINARY `column` = 'value'
Excelente, me resulto como lo queria, te agradezco infinitamente
Responder Con Cita
  #16  
Antiguo 16-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Entonces, ¿qué quiere decir eso? ¿que mysql busca de forma predeterminada en mayúsculas y minúsculas al mismo tiempo?
Responder Con Cita
  #17  
Antiguo 16-12-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
No, depende del collate

La solución #2 es mala porque convertis el texto de un tipo a otro (en una tabla temporal): no sólo puede ser lento sino que hasta se podrían perder caracteres

La realidad es que nadie lee sobre collates ni encodings, dejan todo por defecto

Lo ideal es que si necesita diferenciar los caracteres se use el collate indicado para definir el campo

Es como guardar todo en blobs por poner un ejemplo estupido
Responder Con Cita
  #18  
Antiguo 16-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues no lo entiendo, la verdad
Responder Con Cita
  #19  
Antiguo 16-12-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
En firebird pasa lo mismo:

Cita:
Examples:

Simplest form, using the name as found in the .conf file (case-insensitive):

create collation iso8859_1_unicode for iso8859_1

Characters sets and collation

Es como pretender guardar una ñ en una columna ASCII
Responder Con Cita
  #20  
Antiguo 16-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En firebird, si almacenas "Hola" y lo comparas con "hola", te dirá que no existe, porque no existe, claro.
Eso no tiene nada que ver con "Ññáéííoú...", es un tema distinto.
O eso, o es que todavía no me he enterado del problema
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Buscar sin diferenciar mayusculas de minusculas DARK_WARRIOR Conexión con bases de datos 5 09-12-2007 07:59:51
Update Minúsculas a Mayúsculas (Acentos) Paoti Firebird e Interbase 2 30-08-2007 19:58:04
convertir mayusculas y minusculas. Solo la primera letra en Mayusculas Delphius MS SQL Server 2 21-07-2007 03:20:22
Índices mayúsculas/minúsculas sur-se Firebird e Interbase 4 20-09-2004 21:35:31
Mayusculas Y Minusculas jberaza Firebird e Interbase 1 24-05-2003 19:44:32


La franja horaria es GMT +2. Ahora son las 14:53:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi