none
Login con tipos de usuario C# Visual Studio 2017 RRS feed

  • Pregunta

  • Buenas tardes a todos, tengo un login con 3 tipos de usuario: Nivel 1, Nivel 2 y Nivel 3.

    Me podrían ayudar a que cuando inicie sesión dependiendo del tipo de usuario me envié a un formulario diferente?

    En pocas palabras me gustaría que cada nivel entre a un formulario diferente. 

    Ya tengo la conexión a mysql y mis tablas en localhost, entonces me quedo el código en el botón de (Ingresar) de esta manera:

    _____________________________________________________________________________________________________________

    private void Entrar_btn_Click(object sender, EventArgs e)
    {
    	MySqlConnection Conectar = new MySqlConnection("Server=127.0.0.1; database=conexionbd; Uid= Moz18;            pwd=Moz123; ");
    	Conectar.Open();
    
    	MySqlCommand Codigo = new MySqlCommand();
    	MySqlConnection Conectanos = new MySqlConnection();
    	Codigo.Connection = Conectar;
    	Codigo.CommandText = ("Select *From Conexionbd Where Correo_electronico = '" + Correo_electronico_login.Text + "' and Contraseña = '" + Contraseña_Login.Text + "' and Nivel_1 = '" + Nivel_1_Login.Text + "' and Nivel_2 = '" + Nivel_2_Login.Text + "' and Nivel_3 = '" + Nivel_3_Login.Text + "'");
    	MySqlDataReader leer = Codigo.ExecuteReader();
    	if (leer.Read())
    	{
    		MessageBox.Show("Inicio de sesión exitoso");
    
    		Inicio obj = new Inicio();
    		obj.Show();
    		obj.Visible = true;
    		Visible = false;
    
    	}
            else
    	{
    		MessageBox.Show("Favor de revisar si sus datos son correctos, correo electrónico, contraseña o tipo de usuario");
    	}
    	Conectar.Close();
    } 




    lunes, 17 de diciembre de 2018 3:54

Respuestas

  • Vale,

    Tal cual lo tienes es fácil

    if (leer.Read())
    {
        MessageBox.Show("Inicio de sesión exitoso");
    
        switch(desplegable.Text)
        {
            case "Nivel 1":
                //Codigo para abrir el formulario 1
                break;	
            case "Nivel 2":
                //Codigo para abrir el formulario 2
                break;	
            case "Nivel 3":
                //Codigo para abrir el formulario 3
                break;	
            defaul:
                Inicio obj = new Inicio();
    	    obj.Show();
                obj.Visible = true;
    	    Visible = false;
                break;
        }
    }

    De todos modos, lo que yo te decia, es retornar ese dato de la DB directamente:

    MySqlCommand Codigo = new MySqlCommand();
    MySqlConnection Conectanos = new MySqlConnection();
    Codigo.Connection = Conectar;
    Codigo.CommandText = ("Select *From Conexionbd Where Correo_electronico = '" + Correo_electronico_login.Text + "' and Contraseña = '" + Contraseña_Login.Text);
    MySqlDataReader leer = Codigo.ExecuteReader();
    
    if (leer.Read())
    {
        MessageBox.Show("Inicio de sesión exitoso");
    
        switch(leer["Tipo_usuario"].ToString())
        {
            case "Nivel 1":
                //Codigo para abrir el formulario 1
                break;	
            case "Nivel 2":
                //Codigo para abrir el formulario 2
                break;	
            case "Nivel 3":
                //Codigo para abrir el formulario 3
                break;	
            defaul:
                Inicio obj = new Inicio();
    	    obj.Show();
                obj.Visible = true;
    	    Visible = false;
                break;
        }
    }

    Fijate que en vez de comprobarlo en el where, lo busco en el select para hacer el switch

    Atte

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    lunes, 17 de diciembre de 2018 20:06

Todas las respuestas

  • Buenas,

    Cual es tu duda? no entiendo bien, si ya estas pidiendole que introduzca su tipo de usuario (o al menos eso entiendo) de tu consulta. Simplemente si la sesion se inicia con exito, haz un ifelse en el que abras un formulario u otro.

    De todos modos, tal vez sea una mejor opcion no pedirle al usuario que meta el tipo, sino leerlo tu desde la base de datos, y abrir segun eso.

    Podrías aclararnos como gestionas el tema del login y los niveles? tienes un desplegable?textbox (lo digo porque veo un textbox por nivel)?

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    lunes, 17 de diciembre de 2018 15:05
  • Buenos días Jorge gracias por responder, mi duda es que me gustaría un login con 3 tipos de usuario (Nivel1, Nivel2, Nivel3) y el nivel 1 seria administrador.

    Al iniciar sesión obviamente tengo el textbox de correo_electronico_login y el textbox de Contraseña_login y Tipo_usuario _login que es un desplegable  que tiene nivel 1, nivel 2 y nivel 3

    Me gustaría que al iniciar sesión con el nivel 1 = me envié al formulario Inicio_Nivel1

    Me gustaría que al iniciar sesión con el nivel 2 = me envié al formulario Inicio_Nivel2

    Me gustaría que al iniciar sesión con el nivel 3 = me envié al formulario Inicio_Nivel3

    Saludos!!

    private void Entrar_btn_Click(object sender, EventArgs e)
    {
    	MySqlConnection Conectar = new MySqlConnection("Server=127.0.0.1; database=conexionbd; Uid= Moz18;            pwd=Moz123; ");
    	Conectar.Open();
    
    	MySqlCommand Codigo = new MySqlCommand();
    	MySqlConnection Conectanos = new MySqlConnection();
    	Codigo.Connection = Conectar;
    	Codigo.CommandText = ("Select *From Conexionbd Where Correo_electronico = '" + Correo_electronico_login.Text + "' and Contraseña = '" + Contraseña_Login.Text +  "' and Tipo_usuario = '" + Tipo_usuario_login.Text + "'");
    	MySqlDataReader leer = Codigo.ExecuteReader();
    	if (leer.Read())
    	{
    		MessageBox.Show("Inicio de sesión exitoso");
    
    		Inicio obj = new Inicio();
    		obj.Show();
    		obj.Visible = true;
    		Visible = false;
    
    	}
            else
    	{
    		MessageBox.Show("Favor de revisar si sus datos son correctos, correo electrónico, contraseña o tipo de usuario");
    	}
    	Conectar.Close();
    } 

    lunes, 17 de diciembre de 2018 19:24
  • Vale,

    Tal cual lo tienes es fácil

    if (leer.Read())
    {
        MessageBox.Show("Inicio de sesión exitoso");
    
        switch(desplegable.Text)
        {
            case "Nivel 1":
                //Codigo para abrir el formulario 1
                break;	
            case "Nivel 2":
                //Codigo para abrir el formulario 2
                break;	
            case "Nivel 3":
                //Codigo para abrir el formulario 3
                break;	
            defaul:
                Inicio obj = new Inicio();
    	    obj.Show();
                obj.Visible = true;
    	    Visible = false;
                break;
        }
    }

    De todos modos, lo que yo te decia, es retornar ese dato de la DB directamente:

    MySqlCommand Codigo = new MySqlCommand();
    MySqlConnection Conectanos = new MySqlConnection();
    Codigo.Connection = Conectar;
    Codigo.CommandText = ("Select *From Conexionbd Where Correo_electronico = '" + Correo_electronico_login.Text + "' and Contraseña = '" + Contraseña_Login.Text);
    MySqlDataReader leer = Codigo.ExecuteReader();
    
    if (leer.Read())
    {
        MessageBox.Show("Inicio de sesión exitoso");
    
        switch(leer["Tipo_usuario"].ToString())
        {
            case "Nivel 1":
                //Codigo para abrir el formulario 1
                break;	
            case "Nivel 2":
                //Codigo para abrir el formulario 2
                break;	
            case "Nivel 3":
                //Codigo para abrir el formulario 3
                break;	
            defaul:
                Inicio obj = new Inicio();
    	    obj.Show();
                obj.Visible = true;
    	    Visible = false;
                break;
        }
    }

    Fijate que en vez de comprobarlo en el where, lo busco en el select para hacer el switch

    Atte

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    lunes, 17 de diciembre de 2018 20:06