Inicio a un programa estableciendo contraseña
Hola a todos!
Estoy haciendo un programa al cual hay que acceder mediante una contraseña. Me han explicado un poquito como hacerlo, con un gets y luego poniendo asteriscos (explicacion a grandes rasgos jejeje)..El caso es que no se como hacerlo, porque además de establecer una contraseña..debo dar la opción de modificarla intrduciendo primeramente la contraseña antigua..Lo he probado poniendo en local la contraseña y el user especificos pero esto no me sirve si despues he de modificarla.
Seguramente me haya explicado como el culo, pero fijo que hay alguna mente lucida que me haya entendido el proposito de lo que necesito.
Muchas gracias a todos!
Estoy haciendo un programa al cual hay que acceder mediante una contraseña. Me han explicado un poquito como hacerlo, con un gets y luego poniendo asteriscos (explicacion a grandes rasgos jejeje)..El caso es que no se como hacerlo, porque además de establecer una contraseña..debo dar la opción de modificarla intrduciendo primeramente la contraseña antigua..Lo he probado poniendo en local la contraseña y el user especificos pero esto no me sirve si despues he de modificarla.
Seguramente me haya explicado como el culo, pero fijo que hay alguna mente lucida que me haya entendido el proposito de lo que necesito.
Muchas gracias a todos!
Aqui te dejo un programa tonto que hace todo lo que quieres:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
void cambia_contr(char *contr)
{
char aux1[50],aux2[50];
int i=0;
do
{
printf("ntIntroduce contrase%ca nueva:nt",164);
do
{
aux1[i]=getch(); //se recoge el caracter y
if(aux1[i]!=13)
printf("*"); //se printea un asterisco
i++;
}while(aux1[i-1]!=13); //ejecutar hasta que se pulse <enter>
aux1[i-1]=' ';
printf("ntIntroduce contrase%ca de nuevo:nt",164);
i=0;
do
{
aux2[i]=getch(); //se recoge el caracter y
if(aux2[i]!=13)
printf("*"); //se printea un asterisco
i++;
}while(aux2[i-1]!=13); //ejecutar hasta que se pulse <enter>
aux2[i-1]=' ';
i=0;
if(strcmp(aux1,aux2)!=0)
printf("ntlas contrase%cas no coinciden, introduzca de nuevo!!n",164);
}while(strcmp(aux1,aux2)!=0);
strcpy(contr,aux1);
}
void main(void)
{
char contr[50],op;
char contr_buena[50]="asdf";
int i=0;
printf("Introduce contrase%ca:n",164);
do
{
contr[i]=getch(); //se recoge el caracter y
if(contr[i]!=13)
printf("*"); //se printea un asterisco
i++;
}while(contr[i-1]!=13); //ejecutar hasta que se pulse <enter>
contr[i-1]=' '; //introducir caracter nulo al final
if(stricmp(contr,contr_buena)==0)
{
printf("ncontrase%ca valida!",164);
do
{
printf("nndesea cambiar contrase%ca? (s/n): ",164);
scanf("%c",&op);
op=tolower(op);
fflush(stdin);
}while(op!='s' && op!='n' );
if(op=='s')
cambia_contr(contr_buena);
else
exit(0);
}
else
printf("ncontrase%ca invalida",164);
printf("nContrase%ca: ",164);
puts(contr_buena);
getchar();
}
A disfrutarlo, un saludo
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
void cambia_contr(char *contr)
{
char aux1[50],aux2[50];
int i=0;
do
{
printf("ntIntroduce contrase%ca nueva:nt",164);
do
{
aux1[i]=getch(); //se recoge el caracter y
if(aux1[i]!=13)
printf("*"); //se printea un asterisco
i++;
}while(aux1[i-1]!=13); //ejecutar hasta que se pulse <enter>
aux1[i-1]=' ';
printf("ntIntroduce contrase%ca de nuevo:nt",164);
i=0;
do
{
aux2[i]=getch(); //se recoge el caracter y
if(aux2[i]!=13)
printf("*"); //se printea un asterisco
i++;
}while(aux2[i-1]!=13); //ejecutar hasta que se pulse <enter>
aux2[i-1]=' ';
i=0;
if(strcmp(aux1,aux2)!=0)
printf("ntlas contrase%cas no coinciden, introduzca de nuevo!!n",164);
}while(strcmp(aux1,aux2)!=0);
strcpy(contr,aux1);
}
void main(void)
{
char contr[50],op;
char contr_buena[50]="asdf";
int i=0;
printf("Introduce contrase%ca:n",164);
do
{
contr[i]=getch(); //se recoge el caracter y
if(contr[i]!=13)
printf("*"); //se printea un asterisco
i++;
}while(contr[i-1]!=13); //ejecutar hasta que se pulse <enter>
contr[i-1]=' '; //introducir caracter nulo al final
if(stricmp(contr,contr_buena)==0)
{
printf("ncontrase%ca valida!",164);
do
{
printf("nndesea cambiar contrase%ca? (s/n): ",164);
scanf("%c",&op);
op=tolower(op);
fflush(stdin);
}while(op!='s' && op!='n' );
if(op=='s')
cambia_contr(contr_buena);
else
exit(0);
}
else
printf("ncontrase%ca invalida",164);
printf("nContrase%ca: ",164);
puts(contr_buena);
getchar();
}
A disfrutarlo, un saludo
Una cosa...por l oque veo ya al principio le metes a cajon la contraseña..¿Cómo hago para que una vez cambiada me lo conserve para el proximo inicio de sesion? Tendré que utilizar ficheros???
Mil gracias!
Mil gracias!
hola...
soy estudiante de informatica pero ya he tenido tu problema y tengo idea de como solucionarlo.
Los pasos son los siguiente
1- Crea un nuevo proyecto
2- Archivos->Nuevo->Dialogs(Pestaña)
-PasswordDialog
Esto creara un nuevo formulario que con una
interface para entrar usuario y contraseña.
3-> Crea una variable tipo String Password
Inicializalas en " " o el valor que quieras en el
constructor de ese formulario que se encuentra
en el .cpp
4->En el evento OnClick del Boton OK
{
if(Password== Password->Text )
return true;
return false;
}
Esto te retornara verdadero cuando la contraseña
escrita en el Edit del formulario sea igual a la
que pusiste.
5- Para poder guardar la contraseña tendras que
utilizar ficheros tipo biarios preferentemente .
6- Para poder cambiarla utiliza otro boton y
y otro edit(NuevoPassword) donde puedas
poner la contraseña con otro evento OnClick
que diga :
{
Password = NuevoPassword->Text ;
}
Al finalizar el programa vuelves a guardar la contraseña en un fichero
Si tienes dudas me escribes a [email protected]
Saludos oky
soy estudiante de informatica pero ya he tenido tu problema y tengo idea de como solucionarlo.
Los pasos son los siguiente
1- Crea un nuevo proyecto
2- Archivos->Nuevo->Dialogs(Pestaña)
-PasswordDialog
Esto creara un nuevo formulario que con una
interface para entrar usuario y contraseña.
3-> Crea una variable tipo String Password
Inicializalas en " " o el valor que quieras en el
constructor de ese formulario que se encuentra
en el .cpp
4->En el evento OnClick del Boton OK
{
if(Password== Password->Text )
return true;
return false;
}
Esto te retornara verdadero cuando la contraseña
escrita en el Edit del formulario sea igual a la
que pusiste.
5- Para poder guardar la contraseña tendras que
utilizar ficheros tipo biarios preferentemente .
6- Para poder cambiarla utiliza otro boton y
y otro edit(NuevoPassword) donde puedas
poner la contraseña con otro evento OnClick
que diga :
{
Password = NuevoPassword->Text ;
}
Al finalizar el programa vuelves a guardar la contraseña en un fichero
Si tienes dudas me escribes a [email protected]
Saludos oky
Bueno, bueno... vamos por partes...
Existe una funcion llamada getpass (o algo asi...) que lee una entrada del teclado pero no imprime mas que ******* y mas ****** jajajaja
Ahora, yo nunca la use...uso algo mas "artistico" (si te gusta esa palabra para descrivir a las cosas hechas por uno mismo)
char buffer[256]; /* O algun valor similar */
int c, i=0;
while ((c=getch())!='r') {
printf("%c", '#'); /* Bueno cualquier basura... */
buffer[i++] = c;
}
buffer[i] = 0;
Y tedraz en el buffer la clave. Ahora....
Eso es para leerla y deveria ser una funcion yamada por otro programa y buffer una variable global o algo asi... (si es sucio... pero si eres principiante funciona)
Y el codigo para entrar a cualquier seccion del programa con esa contraseña seria:
int aceptado = 0;
while (aceptado==0) {
leer_pasword_o_como_se_escriva ();
if (strcmp(buffer, "contraseña pedorra")==0) aceptado=1;
}
...y el codigo a ejecutar...
Tambien puede haber un contador de intentos que se incremente en cada pasada y cuando llege a determinado valor se hace un break y luwego se compara si el while salio por la variable aceptado a 1 o por el blreak y se actua en concepcuencia.
Si la variable deve ser cambiable tienes que usar otro buffer que le asignes, al principio del programa una clave por defecto y despues la reyenes con un gets comun y corriente...
Buneo dejo de enrroyarme porque creo que estoy ayudando mucho....};-
Existe una funcion llamada getpass (o algo asi...) que lee una entrada del teclado pero no imprime mas que ******* y mas ****** jajajaja
Ahora, yo nunca la use...uso algo mas "artistico" (si te gusta esa palabra para descrivir a las cosas hechas por uno mismo)
char buffer[256]; /* O algun valor similar */
int c, i=0;
while ((c=getch())!='r') {
printf("%c", '#'); /* Bueno cualquier basura... */
buffer[i++] = c;
}
buffer[i] = 0;
Y tedraz en el buffer la clave. Ahora....
Eso es para leerla y deveria ser una funcion yamada por otro programa y buffer una variable global o algo asi... (si es sucio... pero si eres principiante funciona)
Y el codigo para entrar a cualquier seccion del programa con esa contraseña seria:
int aceptado = 0;
while (aceptado==0) {
leer_pasword_o_como_se_escriva ();
if (strcmp(buffer, "contraseña pedorra")==0) aceptado=1;
}
...y el codigo a ejecutar...
Tambien puede haber un contador de intentos que se incremente en cada pasada y cuando llege a determinado valor se hace un break y luwego se compara si el while salio por la variable aceptado a 1 o por el blreak y se actua en concepcuencia.
Si la variable deve ser cambiable tienes que usar otro buffer que le asignes, al principio del programa una clave por defecto y despues la reyenes con un gets comun y corriente...
Buneo dejo de enrroyarme porque creo que estoy ayudando mucho....};-
