Précédent   Forum des professionnels en informatique > Environnements de développement > MATLAB > Interfaces Graphiques
Interfaces Graphiques Forum d'entraide sur les interfaces graphiques en MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2012, 01h54   #1
Invité régulier
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : janvier 2012
Messages : 29
Points : 6
Points : 6
Par défaut Protection par password

Salut tout le monde,

J'aimerais bien savoir comment protéger un GUI sous MATLAB par un mot de passe.
C'est comme mettre une clé de licence.
yashiromah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 02h21   #2
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 598
Points : 6 829
Points : 6 829
Bonjour,

Petite recherche avec le mot clé "password":
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 10h59   #3
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 915
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 915
Points : 15 889
Points : 15 889
Une autre alternative en utilisant (encore une fois) Uicomponent :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
function test

figure('units','pixel','position',[100 100 300 200],...
    'menubar','none','toolbar','none',...
    'name','Login','numbertitle','off')
movegui('center')

up = uipanel(...
    'units','normalized',...
    'position',[.1 .1 .8 .8],...
    'fontname','arial',...
    'fontsize',12);

y = .2;
iy = (1-2*y)/3;

uicontrol(up,'style','text','units','normalized',...
    'position',[.05 y+2*iy-0.03 .3 y],'string','User: ',...
    'fontname','arial','fontunits','points','fontsize',12,'hor','left')
uicontrol(up,'style','text','units','normalized',...
    'position',[.05 iy-0.03 .3 y],'string','Password: ',...
    'fontname','arial','fontunits','points','fontsize',12,'hor','left')

pop = uicontrol(up,'style','popup','units','normalized',...
    'position',[.4 y+2*iy .55 y],'string',{'aaaa' 'bbbbb' 'ccccc'},...
    'fontname','arial','fontunits','points','fontsize',12,'hor','left', ...
    'tag','popusers');

pass = uicomponent(up,'style','JPasswordField', ...
    'tag','pass',...
    'units','normalized');
set(pass,'position',[.4 iy .55 y],'KeyPressedCallback',@kpcb);

    function kpcb(obj,event)
        
        if event.getKeyCode==10
            checkpass
        elseif event.getKeyCode==27
            pass.Text = '';
        end
        
    end

    function checkpass
        
        str = get(pop,'string');
        str = cellstr(str);
        
        v = get(pop,'value');
     
        if strcmp(pass.Text,str{v})
            % Mot de passe correct
            close
        else 
            % Mot de passe incorrect
            pass.Text = '';
            beep
        end
        
    end

end
Le mot de passe est identique au nom d'utilisateur ici dans cet exemple.
Il suffit d'appuyer sur la touche Entrée pour vérifier le mot de passe saisi.

C'est portable et compilable sans soucis avec le MATLAB Compiler.
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/01/2012, 16h07   #4
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : mars 2010
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 60
Points : 25
Points : 25
Ton programme est génial mais comment peut on récupérer le nom de l'utilisateur qui se connecte car si on renvoie la variable v à travers les fonctions : 'checkpass' puis 'kpcb' Matlab nous informe que cette variable à plusieurs sessions... et impossible de récupérer cette variable dans le set qui gère le callback ...
TheDwarf01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 16h16   #5
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 598
Points : 6 829
Points : 6 829
Bonjour,

Il te suffit d'utiliser le principe des fonctions imbriquées:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function user = test

figure('units','pixel','position',[100 100 300 200],...
    'menubar','none','toolbar','none',...
    'name','Login','numbertitle','off')
movegui('center')

up = uipanel(...
    'units','normalized',...
    'position',[.1 .1 .8 .8],...
    'fontname','arial',...
    'fontsize',12);

y = .2;
iy = (1-2*y)/3;

uicontrol(up,'style','text','units','normalized',...
    'position',[.05 y+2*iy-0.03 .3 y],'string','User: ',...
    'fontname','arial','fontunits','points','fontsize',12,'hor','left')
uicontrol(up,'style','text','units','normalized',...
    'position',[.05 iy-0.03 .3 y],'string','Password: ',...
    'fontname','arial','fontunits','points','fontsize',12,'hor','left')

pop = uicontrol(up,'style','popup','units','normalized',...
    'position',[.4 y+2*iy .55 y],'string',{'aaaa' 'bbbbb' 'ccccc'},...
    'fontname','arial','fontunits','points','fontsize',12,'hor','left', ...
    'tag','popusers');

pass = uicomponent(up,'style','JPasswordField', ...
    'tag','pass',...
    'units','normalized');
set(pass,'position',[.4 iy .55 y],'KeyPressedCallback',@kpcb);

user = [];
uiwait

    function kpcb(obj,event)
        
        if event.getKeyCode==10
            checkpass
        elseif event.getKeyCode==27
            pass.Text = '';
        end
        
    end

    function checkpass
        
        str = get(pop,'string');
        str = cellstr(str);
        
        v = get(pop,'value');
     
        if strcmp(pass.Text,str{v})
            % Mot de passe correct
            user = str{v};
            close
        else 
            % Mot de passe incorrect
            pass.Text = '';
            beep
        end
        
    end

end
Utilisation:
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 16h35   #6
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : mars 2010
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 60
Points : 25
Points : 25
Ha merci, je connaissais pas cette fonction ...

Disons aussi que je n'ai jamais utilisé les fonctions imbriquées
TheDwarf01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 00h00   #7
Invité régulier
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : janvier 2012
Messages : 29
Points : 6
Points : 6
je n ai pas bien compris votre reponse. je suis encore un debutant,
je dispose d un GUI que j ai creer sous matlab, intitule Hydro.m et Hydro.fig.
je veux les proteger par un GUI qui vous demander le nom d utilisateur et le mot de passe.
si le nom d utilisateur et le mot de passe sont correctes, le GUI Hydro s ouvre, sinon il te donne un message d erreur.
les codes que vous avez mis je sais pas comment les utiliser, est ce que je dois les mettre dans mon GUI Hydro, au debut de mon code ou bien quoi.
si vous pouviez me les indiquer pas a pas.
cordialement
yashiromah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 00h42   #8
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : mars 2010
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 60
Points : 25
Points : 25
Tu crées la fonction Test que Dut et Winjerome nous ont gentiment programmé.
Tu crées un nouveau script 'Interface' ou tu fait appel a tes interfaces :

Code :
1
2
3
4
5
6
7
8
9
10
clear all
close all
clc

 list_User={'NOM1' NOM2'};
 
id_user= Interface_Login(list_User);

Hydro(id_user)
Ta figure Hydro.fig a été crée à partir de ta fonction Hydro je présume
TheDwarf01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 00h52   #9
Invité régulier
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : janvier 2012
Messages : 29
Points : 6
Points : 6
oui je sais creer cette fonction mais, est ce que je dois la mettre dans un nouveau fichier .m file ou quoi?????
yashiromah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 01h05   #10
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : mars 2010
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 60
Points : 25
Points : 25
Oui de la même façon de tu crées une fonction File -> New -> Function...
Tu copie colle la fonction test et tu sauvegarde.

Ps: Pense a mettre tes paths on ne sait jamais !
TheDwarf01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h08.


 
 
 
 
Partenaires

Hébergement Web