05-09-2019, 07:40 AM
Buenas:
Como dice el título estoy teniendo problemas a la hora de crear una pequeña aplicación de login basada en base de datos.
En principio todo funciona correctamente siempre y cuando indiques la contraseña correcta, pero si te equivocas y tratas de rectificar el resultado es que siempre aparece el mensaje de contraseña no válida como si fuera un bucle a pesar de que la contraseña que estás introduciendo de nuevo corrigiendo la anterior sí es correcta. (No sé si me explico bien). ¿Puede que necesite hacer una "reconexión a la base de datos en la sentecia elif?.
Como una imagen vale mil palabras os pongo el código que estoy usando. Esta es la función que se conecta a la base de datos y comprueba que la contraseña es correcta).
Como dice el título estoy teniendo problemas a la hora de crear una pequeña aplicación de login basada en base de datos.
En principio todo funciona correctamente siempre y cuando indiques la contraseña correcta, pero si te equivocas y tratas de rectificar el resultado es que siempre aparece el mensaje de contraseña no válida como si fuera un bucle a pesar de que la contraseña que estás introduciendo de nuevo corrigiendo la anterior sí es correcta. (No sé si me explico bien). ¿Puede que necesite hacer una "reconexión a la base de datos en la sentecia elif?.
Como una imagen vale mil palabras os pongo el código que estoy usando. Esta es la función que se conecta a la base de datos y comprueba que la contraseña es correcta).
Código:
def abrisapp():
# PARAMETERS CONNECTION
psql_HOST = "127.0.0.1"
psql_PORT = "5432"
psql_USER = "postgres"
psql_PASS = "2208"
psql_DB = "cronas"
usur = self.comusu.get()
valid = self.enusu.get()
CAT = self.comusu.get()
query = "SELECT passwor FROM claves WHERE usuario="+"'" + usur + "'" + ";"
try:
connstr = "host=%s port=%s user=%s password=%s dbname=%s" % (psql_HOST, psql_PORT, psql_USER, psql_PASS, psql_DB)
conn = psycopg2.connect(connstr)
cur = conn.cursor()
cur.execute(query)
row = cur.fetchall()
conn.commit()
cur.close()
conn.close()
def printpasswor():
self.usuval.insert(0, row)
if self.usuval.get() == valid:
#CAT = self.comusu.get()
self.prinapp = Tk()
self.prinapp.title("CENTRO DE CONTROL DE DATOS")
self.prinapp.geometry('1680x1050')
self.prinapp.resizable(False, False)
self.prinapp.protocol("WM_DELETE_WINDOW", nocerrprinapp)
# FRAMES PRINAPP
self.frameprinapp1 = ttk.Frame(self.prinapp, style="Frames.TFrame")
self.frameprinapp1.grid(row=0, column=0)
self.frameprinapp2 = ttk.Frame(self.prinapp, style="Frames.TFrame")
self.frameprinapp2.grid(row=1, column=0)
# LABELS PRINAPP
self.labprinappcat = ttk.Label(self.frameprinapp1, text='C.A.T', font=('Gentium', 12, 'bold'), relief='groove', borderwidth=5, background='light green')
self.labprinappcat.grid(row=0, column=0, pady=3)
self.labprinappCAT = ttk.Label(self.frameprinapp1, text=CAT, font=('Gentium', 20, 'bold'), relief='sunken', background='#EAFF92', borderwidth=2, foreground='dark blue')
self.labprinappCAT.grid(row=1, column=0, padx=5)
# MENU PRINAPP
self.menubar = Menu(self.prinapp, tearoff = False, font=('Gentium', 10, 'bold'), relief='ridge', activebackground='light green')
self.menuprinapp = Menu(self.menubar, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
self.menuprinapp1 = Menu(self.menubar, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
self.menuprinapp2 = Menu(self.menubar, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
self.menuprinapp3 = Menu(self.menubar, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
self.menuabci = Menu(self.menuprinapp, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
self.menuabci1 = Menu(self.menuprinapp, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
self.menuabci2 = Menu(self.menuprinapp, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
self.menuprinapp.add_cascade(label='Centro Control Logístico', menu=self.menuabci)
self.menuprinapp.add_cascade(label='Centro Control Geográfico', menu=self.menuabci1)
self.menuprinapp1.add_command(label='Ir a ...')
self.menuabci.add_command(label= 'Abrir', command=abreCCL, state='disabled')
self.menuabci.add_command(label= 'Cerrar', command=cierraCCL)
self.menuabci1.add_command(label= 'Abrir')
self.menuabci1.add_command(label= 'Cerrar')
self.menuprinapp.add_separator()
self.menuprinapp.add_command(label= "Salir de Aplicación", command=quitapp)
self.menubar.add_cascade(label = "Centros de Control", menu=self.menuprinapp)
self.menubar.add_cascade(label = "Circulares", menu=self.menuprinapp1)
self.menubar.add_cascade(label = "Procedimientos", menu=self.menuprinapp2)
self.menubar.add_cascade(label = "Manual", menu=self.menuprinapp3)
self.prinlog.destroy()
self.prinapp.configure(menu=self.menubar)
openCCL(self)
elif self.usuval.get() != valid:
messagebox.showinfo(message='La contraseña no es válida', title='ADVERTENCIA')
printpasswor()
except:
print("Error en la conexión a la base de datos")