4 respuestas
Hola,
Prueba un poco esto (cambiando los caracteres)
* Contraseña.PRG - Contraseña.
* ----------------------------
*
* Este es el programa en el que debo ingresar con una contraseña.
*
@ 10,10 DICE "Ingrese su contraseña: " && Para indicar dónde colocar la visualización de la función MOT.
*
ContraseñaOk="dupont" && Buena contraseña que puede venir de un archivo.
*
SI Contraseña(ContraseñaOk) && Si el retorno es correcto.
@ 20,10 DICE "La contraseña es correcta, bienvenido."
ELSE
@ 20,10 DICE "¡Contraseña incorrecta! Acceso denegado"
ESPERAR "Presione una tecla para salir"
RETORNAR
FIN SI
*
ESPERAR "Presione una tecla para continuar este programa"
*
* Programa a ejecutar.
*
RETORNAR && O SALIR.
*
* --------------------------------------------------------------
*
FUNC MOT(Contraseña)
*
* MOT = Cadena de caracteres de la contraseña a ingresar.
*
LOCAL E:=GUARDARRENDIMIENTO(0,0,FILA_MAX(),COLUMNA_MAX()), ; && Guardar pantalla.
R:= .F. , ; && Retorno contraseña incorrecta
V:="" , ; && Cadena que se construye con las pulsaciones del teclado.
C:=0 && Valor del carácter pulsado en el teclado.
*
CLEAR TYPE && Vaciar el búfer del teclado para evitar errores.
*
HACER MIENTRAS C<>13 && Salida con <RETURN>.
C=INKEY()
SI (C>47 .Y. C<91) .O. (C>96 .Y. C<123) && Lista de caracteres aceptados.
V=V+CHR(C) && La cadena se construye.
@ FILA(), COLUMNA() DICE "X"
C=0
FIN SI
FIN MIENTRAS
SI V==Contraseña && Si es la contraseña correcta.
R=.T. && Es cierto.
FIN SI
RETORNAR R
Buen desarrollo
Prueba un poco esto (cambiando los caracteres)
* Contraseña.PRG - Contraseña.
* ----------------------------
*
* Este es el programa en el que debo ingresar con una contraseña.
*
@ 10,10 DICE "Ingrese su contraseña: " && Para indicar dónde colocar la visualización de la función MOT.
*
ContraseñaOk="dupont" && Buena contraseña que puede venir de un archivo.
*
SI Contraseña(ContraseñaOk) && Si el retorno es correcto.
@ 20,10 DICE "La contraseña es correcta, bienvenido."
ELSE
@ 20,10 DICE "¡Contraseña incorrecta! Acceso denegado"
ESPERAR "Presione una tecla para salir"
RETORNAR
FIN SI
*
ESPERAR "Presione una tecla para continuar este programa"
*
* Programa a ejecutar.
*
RETORNAR && O SALIR.
*
* --------------------------------------------------------------
*
FUNC MOT(Contraseña)
*
* MOT = Cadena de caracteres de la contraseña a ingresar.
*
LOCAL E:=GUARDARRENDIMIENTO(0,0,FILA_MAX(),COLUMNA_MAX()), ; && Guardar pantalla.
R:= .F. , ; && Retorno contraseña incorrecta
V:="" , ; && Cadena que se construye con las pulsaciones del teclado.
C:=0 && Valor del carácter pulsado en el teclado.
*
CLEAR TYPE && Vaciar el búfer del teclado para evitar errores.
*
HACER MIENTRAS C<>13 && Salida con <RETURN>.
C=INKEY()
SI (C>47 .Y. C<91) .O. (C>96 .Y. C<123) && Lista de caracteres aceptados.
V=V+CHR(C) && La cadena se construye.
@ FILA(), COLUMNA() DICE "X"
C=0
FIN SI
FIN MIENTRAS
SI V==Contraseña && Si es la contraseña correcta.
R=.T. && Es cierto.
FIN SI
RETORNAR R
Buen desarrollo
Bernard,
Necesitaría una ayuda; por favor, ¡es siempre IGUAL DE IMPORTANTE!!!!!!
usar pass
índice en pass a ind_pass
establecer wrap en
establecer color a ("w/b","w/r")
establecer mensaje a 24 centrado
público fin
test=0
v_nom=espacio(15)
v_statut=espacio(10)
v_pass=espacio(10)
v_id=0
v_rep=espacio(1)
PÚBLICO opciones[2]
opciones[1]="SÍ"
opciones[2]="NO"
PÚBLICO statuts[3]
statut[1]="ADMINISTRADOR"
statut[2]=" EMPLEADO "
statut[3]=" JEFE "
PÚBLICO super[5]
super[1]="Agregar"
super[2]="Paquete"
super[3]="Recordar "
super[4]="Modificar "
super[5]="Eliminar "
test=0
HACER MIENTRAS .T.
ir arriba
blanco()
localizar por (id=1)
si (id <> 1)
limpiar
alerta("No hay ADMINISTRADOR")
derecho={.T.,.F.,.F.}
resu=achoice(9,15,9,27,statut,derecho)
@07,5 decir "Nombre: " obtener v_nom
@09,5 decir "Estatuto: "
@11,5 decir "Contraseña: " obtener v_pass
@13,5 decir "¿Guardar?: " obtener v_rep PICTURE "Y"
resu1=1
leer
si v_rep = "Y"
agregar blanco
reemplazar nom con v_nom
reemplazar stat con statut[resu]
reemplazar pass con v_pass
reemplazar id con resu
alerta("Ficha creada")
fin=.F.
sino
alerta("Ficha no guardada")
blanco()
fin=.F.
fin si
sino
end si
blanco()
limpiar
@1,5 decir "**********************************"
@2,5 decir "** GESTIÓN DE CONTRASEÑAS **"
@3,5 decir "**********************************"
@5,5 decir "Nombre: " obtener v_nom PICTURE "@A"
@7,5 decir "Contraseña: " obtener v_pass PICTURE "@A"
leer
buscar(v_nom)
si encontrado()
si v_pass = pass
si id=1
limpiar
menú a test
test=1
fin=.F.
sino
limpiar
menú a test
test=2
fin=.F.
blanco()
fin si
sino
limpiar
alerta("Contraseña incorrecta")
fin=.F.
blanco()
fin si
sino
alerta(v_nom+", no existe en nuestra base")
fin=.F.
blanco()
end si
hacer mientras .T.
HACER CASO
Caso test = 1
pantalla()
menú a principal
HACER CASO
caso principal = 1
derecho={.T.,.T.,.T.,.T.}
resu=achoice(2,3,10,15,super,derecho)
fin=.T.
hacer mientras fin
si resu = 1
pantalla()
blanco()
derecho={.T.,.T.,.T.}
resu1=achoice(9,18,9,30,statut,derecho)
@07,5 decir "Nombre: " obtener v_nom
@09,5 decir "Estatuto: "
@11,5 decir "Contraseña: " obtener v_pass
@13,5 decir "¿Guardar?: " obtener v_rep PICTURE "Y"
leer
si v_rep = "Y"
agregar blanco
reemplazar nom con v_nom
reemplazar stat con statut[resu1]
reemplazar pass con v_pass
reemplazar id con resu1
alerta("Ficha creada")
fin=.F.
sino
alerta("Ficha no guardada")
blanco()
fin=.F.
fin si
elseif resu=2
pantalla()
paquete
alerta("Fichas eliminadas definitivamente!")
fin = .F.
elseif resu=3
pantalla()
recordar
alerta("Fichas restauradas")
fin = .F.
elseif resu=4
fin=.T.
hacer mientras fin
pantalla()
blanco()
@07,5 decir "Nombre: " obtener v_nom
leer
buscar (v_nom)
si encontrado()
@07,5 decir "Nombre: " obtener v_nom
@09,5 decir "Estatuto: " obtener stat
@11,5 decir "Contraseña: " obtener v_pass
@13,5 decir "¿Eliminar?: " obtener v_rep PICTURE "Y"
leer
si v_rep="Y"
reemplazar nom con v_nom
reemplazar stat con statut[resu1]
reemplazar pass con v_pass
reemplazar id con resu1
pantalla()
alerta("Ficha modificada")
fin=.F.
sino
pantalla()
alerta("Ficha no modificada")
fin=.F.
fin si
fin=.F.
sino
alerta(v_nom+", no existe en nuestra base")
pantalla()
fin=.F.
fin si
fin hacer
sino
fin=.T.
hacer mientras fin
pantalla()
blanco()
@07,5 decir "Nombre: " obtener v_nom
leer
buscar (v_nom)
si encontrado()
@07,5 decir "Nombre: " obtener nom
@09,5 decir "Estatuto: " obtener stat
@11,5 decir "Contraseña: " obtener pass
@13,5 decir "¿Eliminar?: " obtener v_rep PICTURE "Y"
leer
si v_rep="Y"
pantalla()
eliminar
alerta("Ficha en eliminación")
sino
alerta("Ficha no eliminada")
fin si
fin=.F.
sino
alerta(v_nom+", no existe en nuestra base")
pantalla()
fin=.F.
fin si
fin si
fin hacer
fin hacer
caso principal = 2
pantalla()
blanco()
buscar (v_nom)
si encontrado()
@07,5 decir "Nombre: " obtener nom
@09,5 decir "Estatuto: " obtener stat
@11,5 decir "Contraseña: " obtener v_pass
@13,5 decir "¿Eliminar?: " obtener v_rep PICTURE "Y"
leer
si v_rep="Y"
pantalla()
reemplazar nom con v_nom
reemplazar stat con statut[resu1]
reemplazar pass con v_pass
reemplazar id con resu1
alerta("Su ficha ha sido modificada")
sino
alerta("Su ficha no ha sido eliminada")
fin si
fin=.F.
sino
alerta(v_nom+", no existe en nuestra base")
pantalla()
fin=.F.
fin si
caso principal = 3
ir arriba
acColumnas={"nom","stat","pass","id"}
dbedit(2,1,24,79,acColumnas)
caso principal = 4
RETORNAR
FIN CASO
caso test=2
esperar
FIN CASO
enddo
ENDDO
**************************************************************
función pantalla()
limpiar
@1,02 aviso "SUPER USUARIO"
@1,23 aviso "JEFE/EMPLEADO"
@1,45 aviso "LISTA DE USUARIOS"
@1,65 aviso "VOLVER ATRÁS"
retornar
función blanco()
v_nom=espacio(15)
v_statut=espacio(10)
v_pass=espacio(10)
v_id=0
v_rep=espacio(1)
retornar
Necesitaría una ayuda; por favor, ¡es siempre IGUAL DE IMPORTANTE!!!!!!
usar pass
índice en pass a ind_pass
establecer wrap en
establecer color a ("w/b","w/r")
establecer mensaje a 24 centrado
público fin
test=0
v_nom=espacio(15)
v_statut=espacio(10)
v_pass=espacio(10)
v_id=0
v_rep=espacio(1)
PÚBLICO opciones[2]
opciones[1]="SÍ"
opciones[2]="NO"
PÚBLICO statuts[3]
statut[1]="ADMINISTRADOR"
statut[2]=" EMPLEADO "
statut[3]=" JEFE "
PÚBLICO super[5]
super[1]="Agregar"
super[2]="Paquete"
super[3]="Recordar "
super[4]="Modificar "
super[5]="Eliminar "
test=0
HACER MIENTRAS .T.
ir arriba
blanco()
localizar por (id=1)
si (id <> 1)
limpiar
alerta("No hay ADMINISTRADOR")
derecho={.T.,.F.,.F.}
resu=achoice(9,15,9,27,statut,derecho)
@07,5 decir "Nombre: " obtener v_nom
@09,5 decir "Estatuto: "
@11,5 decir "Contraseña: " obtener v_pass
@13,5 decir "¿Guardar?: " obtener v_rep PICTURE "Y"
resu1=1
leer
si v_rep = "Y"
agregar blanco
reemplazar nom con v_nom
reemplazar stat con statut[resu]
reemplazar pass con v_pass
reemplazar id con resu
alerta("Ficha creada")
fin=.F.
sino
alerta("Ficha no guardada")
blanco()
fin=.F.
fin si
sino
end si
blanco()
limpiar
@1,5 decir "**********************************"
@2,5 decir "** GESTIÓN DE CONTRASEÑAS **"
@3,5 decir "**********************************"
@5,5 decir "Nombre: " obtener v_nom PICTURE "@A"
@7,5 decir "Contraseña: " obtener v_pass PICTURE "@A"
leer
buscar(v_nom)
si encontrado()
si v_pass = pass
si id=1
limpiar
menú a test
test=1
fin=.F.
sino
limpiar
menú a test
test=2
fin=.F.
blanco()
fin si
sino
limpiar
alerta("Contraseña incorrecta")
fin=.F.
blanco()
fin si
sino
alerta(v_nom+", no existe en nuestra base")
fin=.F.
blanco()
end si
hacer mientras .T.
HACER CASO
Caso test = 1
pantalla()
menú a principal
HACER CASO
caso principal = 1
derecho={.T.,.T.,.T.,.T.}
resu=achoice(2,3,10,15,super,derecho)
fin=.T.
hacer mientras fin
si resu = 1
pantalla()
blanco()
derecho={.T.,.T.,.T.}
resu1=achoice(9,18,9,30,statut,derecho)
@07,5 decir "Nombre: " obtener v_nom
@09,5 decir "Estatuto: "
@11,5 decir "Contraseña: " obtener v_pass
@13,5 decir "¿Guardar?: " obtener v_rep PICTURE "Y"
leer
si v_rep = "Y"
agregar blanco
reemplazar nom con v_nom
reemplazar stat con statut[resu1]
reemplazar pass con v_pass
reemplazar id con resu1
alerta("Ficha creada")
fin=.F.
sino
alerta("Ficha no guardada")
blanco()
fin=.F.
fin si
elseif resu=2
pantalla()
paquete
alerta("Fichas eliminadas definitivamente!")
fin = .F.
elseif resu=3
pantalla()
recordar
alerta("Fichas restauradas")
fin = .F.
elseif resu=4
fin=.T.
hacer mientras fin
pantalla()
blanco()
@07,5 decir "Nombre: " obtener v_nom
leer
buscar (v_nom)
si encontrado()
@07,5 decir "Nombre: " obtener v_nom
@09,5 decir "Estatuto: " obtener stat
@11,5 decir "Contraseña: " obtener v_pass
@13,5 decir "¿Eliminar?: " obtener v_rep PICTURE "Y"
leer
si v_rep="Y"
reemplazar nom con v_nom
reemplazar stat con statut[resu1]
reemplazar pass con v_pass
reemplazar id con resu1
pantalla()
alerta("Ficha modificada")
fin=.F.
sino
pantalla()
alerta("Ficha no modificada")
fin=.F.
fin si
fin=.F.
sino
alerta(v_nom+", no existe en nuestra base")
pantalla()
fin=.F.
fin si
fin hacer
sino
fin=.T.
hacer mientras fin
pantalla()
blanco()
@07,5 decir "Nombre: " obtener v_nom
leer
buscar (v_nom)
si encontrado()
@07,5 decir "Nombre: " obtener nom
@09,5 decir "Estatuto: " obtener stat
@11,5 decir "Contraseña: " obtener pass
@13,5 decir "¿Eliminar?: " obtener v_rep PICTURE "Y"
leer
si v_rep="Y"
pantalla()
eliminar
alerta("Ficha en eliminación")
sino
alerta("Ficha no eliminada")
fin si
fin=.F.
sino
alerta(v_nom+", no existe en nuestra base")
pantalla()
fin=.F.
fin si
fin si
fin hacer
fin hacer
caso principal = 2
pantalla()
blanco()
buscar (v_nom)
si encontrado()
@07,5 decir "Nombre: " obtener nom
@09,5 decir "Estatuto: " obtener stat
@11,5 decir "Contraseña: " obtener v_pass
@13,5 decir "¿Eliminar?: " obtener v_rep PICTURE "Y"
leer
si v_rep="Y"
pantalla()
reemplazar nom con v_nom
reemplazar stat con statut[resu1]
reemplazar pass con v_pass
reemplazar id con resu1
alerta("Su ficha ha sido modificada")
sino
alerta("Su ficha no ha sido eliminada")
fin si
fin=.F.
sino
alerta(v_nom+", no existe en nuestra base")
pantalla()
fin=.F.
fin si
caso principal = 3
ir arriba
acColumnas={"nom","stat","pass","id"}
dbedit(2,1,24,79,acColumnas)
caso principal = 4
RETORNAR
FIN CASO
caso test=2
esperar
FIN CASO
enddo
ENDDO
**************************************************************
función pantalla()
limpiar
@1,02 aviso "SUPER USUARIO"
@1,23 aviso "JEFE/EMPLEADO"
@1,45 aviso "LISTA DE USUARIOS"
@1,65 aviso "VOLVER ATRÁS"
retornar
función blanco()
v_nom=espacio(15)
v_statut=espacio(10)
v_pass=espacio(10)
v_id=0
v_rep=espacio(1)
retornar
Para su contraseña, después de compilar, dio los siguientes errores
problema de declaración
1 ha declarado v_id=0
2 en locate for (id=1)
hay una declaración de id
solución, o declare id=0
y deje el ciclo for (id=1)
o deje v_id=0
y cambie locate for (v_id=1)
si se trata de otro problema, contácteme en mi correo
faycal.trans@yahoo.fr
problema de declaración
1 ha declarado v_id=0
2 en locate for (id=1)
hay una declaración de id
solución, o declare id=0
y deje el ciclo for (id=1)
o deje v_id=0
y cambie locate for (v_id=1)
si se trata de otro problema, contácteme en mi correo
faycal.trans@yahoo.fr
utiliza esta función para verificar la exactitud de una contraseña
Function PWORD(mp)
local ret_val:=.T.
tone(500,1)
setcursor(1)
Set Color To 15/1, 0/7
dispbox(12,19,14,55,1)
For j:= 1 To 3
@ 13, 20 Say "INGRESE LA CONTRASEÑA: "
b:= ""
@ 13,45 Say " "
@ 13,45 Say ""
For i:= 45 To 52
a:= 0
a:= InKey(0)
If (a == 13)
Exit
EndIf
b:= b + Chr(a)
@ 13, i Say "."
sound(350,1)
Next
if ( ret_val := (upper(alltrim(b)) == upper(alltrim(mp))) )
b:= "1"
Exit
j:= 4
EndIf
sound(350,1)
InKey(0.1)
sound(300,1)
Next
If (b != "1")
Set Color To 7/0
quit
Else
sound(300,1)
Return ret_val
Endif
(lib funkcy y ct3 )
Function PWORD(mp)
local ret_val:=.T.
tone(500,1)
setcursor(1)
Set Color To 15/1, 0/7
dispbox(12,19,14,55,1)
For j:= 1 To 3
@ 13, 20 Say "INGRESE LA CONTRASEÑA: "
b:= ""
@ 13,45 Say " "
@ 13,45 Say ""
For i:= 45 To 52
a:= 0
a:= InKey(0)
If (a == 13)
Exit
EndIf
b:= b + Chr(a)
@ 13, i Say "."
sound(350,1)
Next
if ( ret_val := (upper(alltrim(b)) == upper(alltrim(mp))) )
b:= "1"
Exit
j:= 4
EndIf
sound(350,1)
InKey(0.1)
sound(300,1)
Next
If (b != "1")
Set Color To 7/0
quit
Else
sound(300,1)
Return ret_val
Endif
(lib funkcy y ct3 )
Vous demandez à l'utilisateur de sélectionner ou de saisir son "USER"
c'est à vous de voir et après vous allez lire le "USER" dans un fichier et récupérer le mot de passe de préférence crypté avec les fonctions CRYPT ET DECRYPT dans une variable et pword(variable)
l'utilisateur va saisir le mot de passe s'il est authentifié alors il accède sinon il refait ça 3 fois et après il quitte le programme
bonne chance!
c'est à vous de voir et après vous allez lire le "USER" dans un fichier et récupérer le mot de passe de préférence crypté avec les fonctions CRYPT ET DECRYPT dans une variable et pword(variable)
l'utilisateur va saisir le mot de passe s'il est authentifié alors il accède sinon il refait ça 3 fois et après il quitte le programme
bonne chance!
Bouh, ¡es para dentro de una semana y no logro nada!
¿Quién hizo este maldito lenguaje de programación? ¡¡Horrible!!
¡Bouhhhhhhhhh, estoy desanimado! Además, en 2 semanas no he avanzado porque no va bien.
¿Qué es lo que no funciona en mi programa de arriba y cómo podría mejorarlo?
¡Me dirijo a ustedes!
Gracias de antemano.
JEFFREY T
¿Quién hizo este maldito lenguaje de programación? ¡¡Horrible!!
¡Bouhhhhhhhhh, estoy desanimado! Además, en 2 semanas no he avanzado porque no va bien.
¿Qué es lo que no funciona en mi programa de arriba y cómo podría mejorarlo?
¡Me dirijo a ustedes!
Gracias de antemano.
JEFFREY T
¿Siempre de vacaciones o me has olvidado?
LoL
Realmente necesito tus linternas
JEFFREY T
No, no te he olvidado pero tengo mucho trabajo en este momento.
Mira un poco, he hecho algunas modificaciones a tu programa, pero no tengo tiempo para profundizar:
http://bernard.mouille.free.fr/jeffrey/mpassw.txt
Como te dije el otro día, presta atención a tus bucles para salir "EXIT" o volver al principio del bucle "LOOP".
Buen desarrollo
Bernard