while loop in matlab password GUI
Afficher commentaires plus anciens
Hi, i want to create a matlab program that will require the user to enter the username and password before they can gain access to the program. so far i have able to do it if the correct password is enter but i cannot get the program to loop corretly. i want if the user enter the wrong combination of password/username lets say maximum 3 times, the system will terminated. plz help me guys...waste a lot of time on doing this.
username1=*****;
password1=****;
username = upper(get(handles.edit1,'string'));
password = upper(get(handles.edit6,'string'));
if(strcmpi(username,username1))
if (strcmpi(password,password1))
disp('successfully log into the system');
else
close all
end
else
close all
end
Réponse acceptée
Plus de réponses (5)
David Sanchez
le 7 Mai 2013
I hope following code is of help
username1 = 'xxx';
password1 = 'yyy';
attemps = 0;
while attemps < 4
username = input('intoduce user name: ');
password = input('intoduce password: ');
if(strcmpi(username,username1))&&(strcmpi(password,password1))
disp('successfully log into the system');
return
else
attemps = attemps + 1;
end
end
1 commentaire
David Sanchez
le 8 Mai 2013
Hi, since disp('a'); is outside the while loop, it will always be displayed. You can set a condition if to display 'a' only if 3 attempts were made
username1= 'xxx';
password1= 'yyy';
attempt= 0;
while attempt < 3
username = upper(get(handles.edit1,'string'));
password = upper(get(handles.edit6,'string'));
if(strcmpi(username,username1))&&(strcmpi(password,password1))
disp('b');
return
else
attempt = attempt + 1;
end
end
if attempt == 3
disp('a');
end
I hope it helped you, do not forget to vote if so.
1 commentaire
David Sanchez
le 8 Mai 2013
Hi, that's a bit awkward, with the code above, disp('a') only comes to work when attempt equals 3 ( if attempt == 3 ). I tested it myself and 'a' is only displayed after three unsuccessful attempts were made. You can try the following version too: ( adapt it for you GUI later, it is easier to debug code outside the GUI, once it works as you want, insert it in the GUI )
username1= 'xxx';
password1= 'yyy';
attempt= 0;
while attempt < 3
username = input('intoduce user name: ');
password = input('intoduce password: ');
if(strcmpi(username,username1))&&(strcmpi(password,password1))
disp('b');
return
else
attempt = attempt + 1;
if attempt == 3
disp('a');
end
end
end
3 commentaires
Pat
le 8 Mai 2013
Teja Muppirala
le 8 Mai 2013
But first change this:
username = input('intoduce user name: ');
password = input('intoduce password: ');
To this:
username = input('intoduce user name: ','s');
password = input('intoduce password: ','s');
to indicate the input is a string, otherwise you'll have to put quotes in your input to distinguish it from a variable.
Teja Muppirala
le 8 Mai 2013
In your GUI case, the reason it displays 'a' after just one failed attempt is, this loop:
username1= 'xxx';
password1= 'yyy';
attempt= 0;
while attempt < 3
username = upper(get(handles.edit1,'string'));
password = upper(get(handles.edit6,'string'));
if(strcmpi(username,username1))&&(strcmpi(password,password1))
disp('b');
return
else
attempt = attempt + 1;
end
end
if attempt == 3
disp('a');
end
runs 3 times instantly before you can even change the values in the edit boxes. I'm assuming this code is in some callback, like a pushbutton or something. You're going to need to check the password only once every time the user runs this callback function, and keep track of how many times they tried/failed. For example, you might store the variable attempt as 'Userdata' or use SETAPPDATA or something. Then increment it once everytime the user submits the password.
David Sanchez
le 8 Mai 2013
Teja got it right, I think next code would be helpful ( it needs to be adapted to your GUI )
attempts = 0; % do not initialize this variable in pushbutton callback function
% this goes in your login pushbutton callback function
username = get(handles.usrbox,'string');
password = get(handles.psswrdbox, 'string');
attempts = attempts + 1;
if strcmpi(username, username1)&&strcmpi(password,password1)
disp('b')
elseif attempts == 3
disp('a');
end
1 commentaire
Catégories
En savoir plus sur Programming dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!