Deseo hacer un login

05/10/2007 - 23:10 por RP | Informe spam
Hola, deseo hacer un login para una aplicación Windows en C#, para acceder a
una aplicación, el punto es que yo estoy acostumbrado a trabajar con Visual
Basic 6.0 y las sentencias son distintas, deseo saber si me pueden ayudar con
el codigo o un ejemplo para poder hacer esa pequeña aplicación, teniendo en
cuenta que mi base de datos esta en Access.

Espero pronta respuesta a mi interrogante...

Atte.

Preguntas similare

Leer las respuestas

#1 zxkaos
22/10/2007 - 16:34 | Informe spam
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Data.SqlClient;


namespace Analizador
{
public partial class Login : Form
{
SqlConnection conn;
SqlCommand command;
string query;

public Login()
{
InitializeComponent();
conn = Analizador.Program.conexion.getConnection();
command = conn.CreateCommand();
}

private void entrar_Click(object sender, EventArgs e)
{

string usuario = txtusuario.Text.ToString().Trim();
string contrasena = txtcontra.Text.ToString().Trim();


query = "SELECT COUNT(usu_id) FROM tabla_usuarios WHERE
usu_usuario= '"+ usuario +"' AND usu_password = '" + contrasena + "'";
command = new SqlCommand(query, conn);

string FilasContadas = command.ExecuteScalar().ToString();


if (FilasContadas.Equals("0"))
{
txtusuario.Clear();
txtcontra.Clear();
txtusuario.Focus();
MessageBox.Show("Los datos del usuario son inválidos");
return;
}
else
{
query = "SELECT usu_id, usu_usuario, usu_password,
usu_rol_id FROM tabla_usuarios WHERE usu_usuario= '" + usuario + "' AND
usu_password = '" + contrasena + "'";
command = new SqlCommand(query, conn);
SqlDataReader reader = command.ExecuteReader();

Form2 N = new Form2();
N.Show();
this.Hide();
}

}



private void cancelar_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void Login_FormClosing(object sender, FormClosingEventArgs e)
{
//MessageBox.Show(this.DialogResult.ToString());
if (this.DialogResult==DialogResult.Cancel)
e.Cancel = true;

//if (this.DialogResult == DialogResult.None)
// Application.Exit();

}

}
}
Respuesta Responder a este mensaje
#2 Lluis Franco
23/10/2007 - 09:32 | Informe spam
:-)
Hola,
Sólo un apunte:
Cuidadito con inyección de código SQL. Que pasa si el usuario introduce ' OR
1=1-- en el campo de texto del usuario?

Saludos,

Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
Web: http://sps.uyssoft.com
Blog: http://msmvps.com/blogs/lfranco
Geeks: http://geeks.ms/blogs/lfranco
(Guía de netiquette de los foros)
http://sps.uyssoft.com/Foros%20onli...uette.aspx
FIMARGE, S.A.
Principat d'Andorra

Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profile/Lluis
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho.
Respuesta Responder a este mensaje
#3 RP
31/10/2007 - 17:55 | Informe spam
Efectivamente existe el problema mencionado por la inyección de código SQL, y
preguntando me dijeron que use Procedimientos Almacenados, pero mi base de
datos esta hecha en Microsoft Access, como podria evitarme ese problema de
las inyecciones??...

"Lluis Franco" wrote:

:-)
Hola,
Sólo un apunte:
Cuidadito con inyección de código SQL. Que pasa si el usuario introduce ' OR
1=1-- en el campo de texto del usuario?

Saludos,

Lluís Franco i Montanyés
Respuesta Responder a este mensaje
#4 Octavio Hernandez
31/10/2007 - 18:30 | Informe spam
¿Para qué ejecutas dos sentencias, si con una podrías hacer ambas cosas
(preguntar si existe tal usuario, y obtener sus datos)?

using (SqlConnection conn = new SqlConnection(cadenaConexion))
{
conn.Open();
string query = "SELECT usu_id, usu_rol_id FROM tabla_usuarios"
+ " WHERE usu_usuario = @P1 AND usu_password = @P2";
using (SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@P1", txtUsuario.Text);
cmd.Parameters.AddWithValue("@P2", txtContra.Text);
using (SqlDataReader rdr = cmd.ExecuteReader())
{
if (rdr.Read())
{
// encontrado un usuario con ese nombre y contra
string id = rdr[0].ToString(); // el ID del usuario
(si es una cadena)
string rol_id = null; // el rol del usuario
if (rdr[1] != DBNull.Value)
rol_id = rdr[1].ToString();
// el nombre ya lo tienes (el que el usuario dio)

// lo demás que haya que hacer...

}
else
{
// no existe usuario con ese nombre y contra
}
}
}
}

El fragmento anterior:
a) de una sola vez resuelve todo
b) utiliza SQL parametrizado y no SQL dinámico, evitando la inyección de SQL
c) gracias a las sentencias using, se devuelven al sistema los recursos no
manejados que utilizan SqlCommand, etc. (que implementan IDisposable).

Saludos - Octavio
Respuesta Responder a este mensaje
#5 Lluis Franco
02/11/2007 - 09:29 | Informe spam
:-)
Usando consultas con parámetros y los objetos Command y Parameter (dale un
vistazo a la respuesta de Octavio).
De este modo no necesitas un SP.

Saludos,

Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
Web: http://sps.uyssoft.com
Blog: http://msmvps.com/blogs/lfranco
Geeks: http://geeks.ms/blogs/lfranco
(Guía de netiquette de los foros)
http://sps.uyssoft.com/Foros%20onli...uette.aspx
FIMARGE, S.A.
Principat d'Andorra

Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profile/Lluis
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida