es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para recuperar correctamente los datos de la base de datos y compararlos con la entrada del usuario, debes hacer lo siguiente:

    1. Modifica tu consulta SQL para seleccionar tanto el nombre de usuario como la contraseña para el nombre de usuario proporcionado desde la tabla de cuentas. Puedes usar la cláusula WHERE para filtrar los resultados por el nombre de usuario proporcionado.

    Aquí tienes un ejemplo de consulta:

    SELECT username, password FROM accounts WHERE username=?
    

    Reemplaza el ? con el parámetro de nombre de usuario proporcionado.

    1. Utiliza el método execute de USer_crsr para ejecutar la consulta SQL.
    USer_crsr.execute(user_cm, (username,))
    

    Aquí, pasamos el parámetro de nombre de usuario como una tupla y lo usamos como una consulta parametrizada.

    1. Utiliza el método fetchone de USer_crsr para obtener el resultado de la consulta SQL.
    result = USer_crsr.fetchone()
    

    Aquí, recuperamos la primera fila del resultado de la consulta SQL.

    1. Compara la contraseña recuperada con la contraseña proporcionada.
    if result and password == result[1]:
    

    Aquí, verificamos si el resultado existe y si la contraseña proporcionada coincide con la segunda columna del resultado.

    Aquí está el código actualizado:

    @app.route('/login', methods=["GET", "POST"])
    def login():
        msg = ''
    
        if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
           # Crea variables para acceder fácilmente
            username = request.form['username']
            password = request.form['password']
    
            # Establecer conexión
            connection = sqlite3.connect("Users.db")
    
            # Cursor
            user_crsr = connection.cursor()
    
            user_cm = """
                SELECT username, password
                FROM accounts
                WHERE username=?
            """
    
            user_crsr.execute(user_cm, (username,))
    
            result = user_crsr.fetchone()
    
            if result and password == result[1]:
                # Crea datos de sesión, podemos acceder a estos datos en otras rutas
                  session['loggedin'] = True
                  session['id'] = result[0]
                  session['username'] = result[1]
                  # Redireccionar a la página de inicio
                  return '¡Inicio de sesión exitoso!'
            else:
                # La cuenta no existe o el nombre de usuario/contraseña es incorrecto
                msg = '¡Nombre de usuario/contraseña incorrectos!'
        return render_template("login.html", msg=msg)
    

Comments are closed.