Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-03-2005
alfredosg19 alfredosg19 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Barcelona
Posts: 91
Poder: 20
alfredosg19 Va por buen camino
Comparar un campo de usuario y password.

Hola, estoy haciendo un formulario de validación de usuario y password, ya puedo leer la base de datos pero ¿como comparar ambos campos? y ¿como validarla si se corresponden?. Supongo que primero tengo que comparar lo que está en el Tedit con cada campo al que corresponda y si el campo1(usuario) y el campo2(password) se corresponden dentro del mismo registro el resultado es TRue y si no False. ¿como puedo hacer esto?. Muchas gracias.
__________________
"La perseverancia es el camino del éxito"
Responder Con Cita
  #2  
Antiguo 11-03-2005
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 22
@-Soft Va por buen camino
Thumbs up

hola

mira a ver con esto:
Código Delphi [-]

// Aqui, se busca el usuario en la tabla de acuerdo al criterio escrito
// y despues verifica que el campo clave de la tabla sea el mismo que
// el ecrito
if (Tuser.Locate(TUserusuario.FieldName, Edit1.Text, []) and (Tuser.clave = Edit2.Text) then
begin
   ShowMessage('Aqui debes hacer lo que tu quieras.');
end else
   ShoeMessage('Mi#@}, este usuario no esta aqui, revise');
end;

espero que te pueda servir, salu23

P.D. si utilizas password encriptado, primero debes desencriptar el password y comparar
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
Responder Con Cita
  #3  
Antiguo 11-03-2005
alfredosg19 alfredosg19 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Barcelona
Posts: 91
Poder: 20
alfredosg19 Va por buen camino
No entiendo...

Hola, te agradezco tu ayuda, pero tengo una duda, no me acaba de funcionar por esto 'TUserusuario.FieldName' que quiere decir,¿ es la tabla y el campo que quiero?, y el ¿Tuser.clave?. Gracias.
__________________
"La perseverancia es el camino del éxito"
Responder Con Cita
  #4  
Antiguo 11-03-2005
maguib maguib is offline
Registrado
 
Registrado: mar 2005
Ubicación: México
Posts: 9
Poder: 0
maguib Va por buen camino
Smile Otra alternativa

Hola, vi tu problema y te sugiero que utilices un query para ver que tanto el usuario como el password corresponden a una misma persona, y si el query te arroja un valor verdadero pues ya está.

Pon estas líneas:

with Query1 do
begin
close;
sql.clear;
sql.add('select * from Tabla where usuario='+chr(39)+Edit1.text+chr(39)+' and password='+chr(39)+Edit2.text+chr(39)+'');
execSQL;
open;
if not isempty then // aquí es donde verificas si coinciden ambos datos
//código
else
//código
end;
Responder Con Cita
  #5  
Antiguo 11-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por maguib
'select * from Tabla where usuario='+chr(39)+Edit1.text+chr(39)+' and password='+chr(39)+Edit2.text+chr(39)+''
Hay que tener un poco de cuidado con este tipo de consultas. Suponte que el usuario escribe:

Edit1: roman
Edit2: ' or '1'='1 (con todo y apóstrofes)

La consulta queda así:

select * from Tabla where usuario='roman' and password='' or '1'='1'

Como '1' siempre es igual a '1', cualquiera que sepa mi nombre de usuario podrá entrar. Por ello es más seguro como propone @-Soft; primero buscas al usuario y luego comparas las contraseñas.

Más seguro aún sería guardar la contraseña encriptada y compararla con la encriptación del password que escribe el usuario.

// Saludos
Responder Con Cita
  #6  
Antiguo 12-03-2005
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 22
@-Soft Va por buen camino
Red face

hola

Cita:
Empezado por alfredosg19
Hola, te agradezco tu ayuda, pero tengo una duda, no me acaba de funcionar por esto 'TUserusuario.FieldName' que quiere decir,¿ es la tabla y el campo que quiero?, y el ¿Tuser.clave?. Gracias.

[TUser][usuario][.][Fieldbybame], he separado por segmento para explicarte mejor.

TUser ---> es el nombre de la tabla usuarios
usuario--> es el nombre del campo usuario
. -------> es el operador de enlace con la propiedad
Fieldbyname ---> es una propiedad que identifica o declara ese campo de la tabla, asi cuando realice la consulta sabra que se esta hablando del campo usuario del dataset Tuser.

pero para no complicarte mucho, ya que esto son mejoras para mis codigos, te voy a poner a lo clasico.

asumiendo que usas DataModule y que este se llama DM, te explico lo siguiente:

Código Delphi [-]
// Aqui, se busca el usuario en la tabla de acuerdo al criterio escrito
// y despues verifica que el campo clave de la tabla sea el mismo que
// el ecrito
if (DM.Tuser.Locate('usuario', Edit1.Text, []) and (DM.Tuser.clave = Edit2.Text) then
begin
   ShowMessage('Aqui debes hacer lo que tu quieras.');
end else
   ShoeMessage('Mi#@}, este usuario no esta aqui, revise');
end;

al escribir DM. la opcion de autocompletar de delphi te trae los nombres de las tablas y/o propiedades que vas ha usar.

Salu2
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
Responder Con Cita
  #7  
Antiguo 12-03-2005
alfredosg19 alfredosg19 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Barcelona
Posts: 91
Poder: 20
alfredosg19 Va por buen camino
Me falta un dato.

Hola a todos, seguro que lo que me falta es una tonteria pero no puedo hacer la comparación, lo he intentado de todas las maneras pero no puedo, hasta el and va bien seguro. Después hice lo mismo para la contraseña que para lo del usuario y resultó pero me valida a cualquier usuario con cualquier contraseña. Les pido el último empujón. MUCHAS GRACIAS.
Código:
procedure TFrmUsuari.BitBtn1Click(Sender: TObject);
 begin
 if (ADOtable1.Locate('usuari', meUsuari.Text, []) and (ADotable1.????? = meCodi.Text))) then
 begin
    ShowMessage('Aqui debes hacer lo que tu quieras.');
 end else
    ShowMessage('Mi#@}, este usuario no esta aqui, revise');
 end;
__________________
"La perseverancia es el camino del éxito"
Responder Con Cita
  #8  
Antiguo 12-03-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
  procedure TFrmUsuari.BitBtn1Click(Sender: TObject);
  begin
  if (ADOtable1.Locate('usuari', meUsuari.Text, []) and (ADotable1MiCampo.Value = meCodi.Text)) then
  begin
     ShowMessage('Aqui debes hacer lo que tu quieras.');
  end else
     ShowMessage('Mi#@}, este usuario no esta aqui, revise');
  end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #9  
Antiguo 15-03-2005
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 22
@-Soft Va por buen camino
hola

donde vas a sustituir la MiCampo por el nombre del campo que tiene la clave en la tabla.

Código Delphi [-]
procedure TFrmUsuari.BitBtn1Click(Sender: TObject);
  begin
  if (ADOtable1.Locate('usuari', meUsuari.Text, []) and   (ADotable1Password.Value = meCodi.Text)) then
  begin
     ShowMessage('Aqui debes hacer lo que tu quieras.');
  end else
     ShowMessage('Mi#@}, este usuario no esta aqui, revise');
  end;
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 01:11:29.


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