Ver Mensaje Individual
  #15 (permalink)  
Antiguo 14/07/2010, 08:45
maco2008
 
Fecha de Ingreso: agosto-2008
Mensajes: 149
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Validar Usuario & Contraseña!

Hola, pues revisando bien tu codigo hay varios problemas, por ejemplo:

string cadena = ("SELECT * FROM usuario WHERE nusuario == +usuario.Text And contraseña == +contraseña.Text");

esto daría resultado :

Suponiendo que usuario.Text = hola y contrtaseña.text = pass

SELECT *FROM usuario WHERE nusuario = hola and contraseña = pass como verás esta sintaxis esta mal, ya que los valores de caracteres en SQL van con una comilla

SELECT *FROM usuario WHERE nusuario = 'hola' and contraseña = 'pass'

en fin, hice un código de validación de password, que te aseguro que funciona bien, ya que yo mismo ,lo probé, luego lo adapte a tu circunstancia...:

1.- Borra todo, cuando hablo de todo es borrar primeramente las variables publicas que cada vez que entras en la página se crrearán (muy poco optimizado):

Código ASP:
Ver original
  1. public const string cad = @"Data Source=.\SQLEXPRESS;AttachDbFilename= C:\Documents and Settings\MARIO\Mis documentos\Visual Studio 2008\WebSites\ProgramaAlmacen\Almacen.mdf;Integrat ed Security=True;Connect Timeout=30;User Instance=True";
  2. SqlConnection conexion;
  3. SqlCommand comando;

Eso borra,

Luego borra la función completa de conectar();

Código ASP:
Ver original
  1. public void conectar()
  2. {
  3. try
  4. {
  5. conexion = new SqlConnection(cad);
  6. conexion.Open();
  7. }
  8. catch
  9. {
  10.  
  11. }
  12. }

eso, te recomiendo no usar mucho el try, ya que también consume recursos....

y por ultimo deja completamente vacio el procedimiento o fucnion del boton entrar, osea Button1_Click

y reemplazalo por este otro (hize yo):

Código ASP:
Ver original
  1. protected void Button1_Click(object sender, EventArgs e)
  2.         {
  3.  
  4.  
  5.             string cad = @"Data Source=.\SQLEXPRESS;AttachDbFilename= C:\Documents and Settings\MARIO\Mis documentos\Visual Studio 2008\WebSites\ProgramaAlmacen\Almacen.mdf;Integrat ed Security=True;Connect Timeout=30;User Instance=True";
  6.             string cadena = "SELECT * FROM usuario WHERE nusuario = '"+usuario.Text+"'";
  7.             SqlConnection conexion = new SqlConnection(cad);
  8.             conexion.Open();
  9.             SqlCommand comando = new SqlCommand(cadena, conexion);
  10.             comando.ExecuteNonQuery();
  11.  
  12.             SqlDataReader dr;
  13.             dr = comando.ExecuteReader();
  14.  
  15.             if (dr.Read())
  16.             {
  17.                 if (dr.HasRows)
  18.                 {
  19.                     string password = dr["contraseña"].ToString();
  20.                     password = password.Trim();
  21.                     if (password == contraseña.Text)
  22.                     {
  23.                         Response.Redirect("PaginaPrin.aspx");
  24.                     }
  25.                     else
  26.                         Error();
  27.                 }
  28.                 else
  29.                 {
  30.                     Error();
  31.                 }
  32.             }
  33.             else
  34.                 Error();
  35.  
  36.             conexion.Close();
  37.  
  38.  
  39.         }
  40.     }

y luego creas esta funcion de error:
Código ASP:
Ver original
  1. private void Error()
  2.         {
  3.             Label6.Visible = true;
  4.             Label7.Visible = true;
  5.         }

saludos.

se me olvido decir que la instriuccion que te pasé es mucho más segura ya que valida si la password de la bd con el que el usuario coloco son las mismas.

Última edición por maco2008; 14/07/2010 a las 09:27