IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Evenement pour un bouton


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Evenement pour un bouton
    Bonjour a Tous,

    Je viens de créer ma première application avec windev "gestion du stock" , j'ai créé une table pour les utilisateurs de l'application afin de contrôler l'accès a la BD ,

    le problème c'est que lorsque je lance ce code j’obtiens automatiquement "cet utilisateur existe"

    code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    POUR TOUS utilisateur 
          HLitRecherche(utilisateur,utilisateur.login_user,ContenuActuelSaisie)   
          HLitRecherche(utilisateur,utilisateur.Password_user,ContenuActuelSaisie1)
          SI HTrouve(utilisateur) ALORS
              Info("cet utilisateur existe ")	
          ELSE 
    	  Info("il n'existe pas")
          FIN
    FIN

  2. #2
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Bonjour,

    le reste de votre application fonctionne ?
    Je crois qu'il vous faut faire (ou refaire) le guide d'autoformation Windev....

    Ce n'est pas en faisant 2 recherches successives avec l'un et l'autre que cela va fonctionner...

    On cherche l'utilisateur et on contrôle que la valeur Pass est la bonne, un truc du genre (si la recherche sur login est possible).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    USER_OK est un booléen
     
    HLitRecherche(utilisateur,utilisateur.login_user,ContenuActuelSaisie)   
    SI Htrouve(Utilisateur) alors
        SI utilisateur.Password_user = ContenuActuelSaisie1 alors
            USER_OK = vrai
        FIN
    FIN
     
    SI USER_OK ALORS
        Info("cet utilisateur existe ")
    SINON
        Info("il n'existe pas")
    FIN

    Sinon on peut aussi passer par une requête avec 2 paramètres et si on a au moins 1 enregistrement (HNBENR) en résultat c'est que le couple Login/pass est valide ....

    Bonne suite,
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 283
    Points : 263
    Points
    263
    Par défaut
    POUR TOUS utilisateur
    HLitRecherche(utilisateur,utilisateur.login_user,ContenuActuelSaisie)
    HLitRecherche(utilisateur,utilisateur.Password_user,ContenuActuelSaisie1)

    SI HTrouve(utilisateur) ALORS
    Info("cet utilisateur existe ")
    ELSE
    Info("il n'existe pas")
    FIN

    FIN

    Pour chaque ligne d'utilisateur, tu recherche et lit la première ligne trouver avec ContenuActuelSaisie.
    Tu change de positionnement pour rechercher et lire la première ligne trouver avec ContenuActuelSaisie1.


    Donc, disons que tu as 100 membres, tu viens d'appeler ta BD 200 fois pour ne trouver une correspondance qui peut être très différente du choix souhaité.



    Je te laisse mon code pour ma fenêtre Login. Analyse le et essaie de l'adapter à ton logiciel.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Déclaration globales de Fen_Login 
     
    gbStatutconnexion est un booléen = Faux //La pré-connexion à t-elle marcher?
    gsStatutConnexionError est une chaîne //Chaine complète de l'erreur
    gbComebackToWindows est un booléen = Faux //Est-ce que l'on revient sur la fenêtre login(ex. déconnexion). Ceci est pour éviter la connexion auto lors de la déconnexion


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Initialisation de Fen_Login
     
    //Lecture des données enregistrer par l'utilisateur
    SI fFichierExiste(gsRepertoireAppData+"\bin\login.ini")=Vrai ALORS
     
    	id est une chaîne = INILit("Login","id","",gsRepertoireAppData+"\bin\login.ini") //Id de l'utilisateur enregistrée
     
     
    	SI id = "" ALORS
    		RETOUR
    	FIN
     
    	SC_Login.INT_SansNom1 = 1 //Se souvenir de moi
     
    	SC_Login.SAI_SansNom1 = INILit(id,"user","",gsRepertoireAppData+"\bin\login.ini") //Nom d'utilisateur
    	SC_Login.SAI_SansNom2 = Décrypte(INILit(id,"pass","",gsRepertoireAppData+"\bin\login.ini"),xxxxxxxx,crypteSécurisé) //Mot de passe crypté
     
     
    	//Est-ce qu'on connecte automatiquement
    	SI INILit(id,"autologin","0",gsRepertoireAppData+"\bin\login.ini") = 1 ALORS
    		SC_Login.INT_SansNom2=1 //Connexion automatique
    		SI gbComebackToWindows = Faux ALORS 
     
    			gbStatutconnexion = Vrai
     
    			VRetour est une chaine = PréConnexion(SC_Login.SAI_SansNom1,SC_Login.SAI_SansNom2) //User & Pass
     
                            Si VRetour = vrai Alors
    			ExécuteTraitement(SC_Login.BTN_SansNom1,trtClic) //On simule le clic sur le bonton "Connexion"
                            SINON
                            //Erreur(gsStatutConnexionError)
                            FIN
     
     
    		FIN
    	FIN
    FIN
     
     
     
     
    RepriseSaisie(SAI_SansNom3) //On donne le focus à un champ vide caché.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    PROCEDURE PréConnexion(user,pass)
     
     
     
    //À la sortie du champ login ou password, on regarde si la connexion risque de fonctionner ou non, mais on ne connecte pas immédiatement 
     
    //On regarde les champs et la syntaxe
     
    SI user = "" ALORS
    	gsStatutConnexionError = "Entrez votre adresse email."
    	gbStatutconnexion = Faux
    	RENVOYER "email.Vide"
    FIN
     
    SI pass = "" ALORS
    	gbStatutconnexion = Faux
    	gsStatutConnexionError = "Entrez votre mot de passe."
    	RENVOYER "Pass.Vide"
    FIN
     
    SI Taille(pass) < 6 ALORS
    	gbStatutconnexion = Faux
    	gsStatutConnexionError = "Le mot de passe doit avoir aux moins 6 caractères." 
    	RENVOYER "Pass.lenght"
    FIN
     
    SI EmailVérifieAdresse(user,emailValideSyntaxe) <> emailAdresseValide ALORS
    	gsStatutConnexionError = "L'adresse email saisie n'est pas valide. Vérifier sa syntaxe."
    	gbStatutconnexion = Faux
    	RENVOYER "email.Syntaxe"
    FIN
     
    //L'identiant est-il bon?
     
    SI Me.CheckOauth(user,pass) = Vrai ALORS
    		//Le mot de passe est bon
    		//Le compte est-il verouiller
    		SI user_credential.Islocked = Vrai ALORS
    			gbStatutconnexion = Faux
    			gsStatutConnexionError = "Votre compte à reçu trop de connexion échoué. Votre compte a été verrouillé, communiquez avec un administrateur pour le déverrouiller."
    			RENVOYER "user.locked"
    		FIN
     
    		//Le compte est désactiver?
    		SI user_principal.is_enabled = Faux ALORS
    			gsStatutConnexionError = "Ce compte a été désactivé. Communiquez avec un administrateur pour le réactiver."
    			gbStatutconnexion = Faux
    			RENVOYER "user.deactived"
    		FIN
     
     
                    //Tous les vérification sont faite et le mot de passe est bon. On peut attendre la connexion.
     
    		gsStatutConnexionError = "Vous pouvez vous connecter."
    		gbStatutconnexion = Vrai
     
    SINON
            //Le user/mot de passe ne correspond pas
    	gbStatutconnexion = Faux
    	gsStatutConnexionError = "L'identifiant et/ou le mot de passe saisie n'est pas valide."
    		RENVOYER Faux
    FIN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    PROCEDURE CheckOauth(gsemail,gspassword)
     
    sPassword est une chaîne 
     
    SI LookForID(gsemail) = Vrai ALORS
    	//On regarde si le mot de passe conconrde
    	SI PAS HLitRecherche(user_credential,user_fkid,id) ALORS //ID trouvé plus tôt avec LookForID
    		RENVOYER Faux
    	SINON
    		//Décryptage du mdp
    		sPassword = Décrypte(user_credential.password,xxxxxxx,crypteRapide)
    		//Analyse du mdp
    		SI sPassword <> gspassword ALORS
    			AjouteCountToPassword()
    			RENVOYER Faux
    		SINON
    			//Le mot de passe est bon, on vérifie si le compte est activé
    			RENVOYER Vrai
    		FIN
     
     
     
    	FIN
     
    SINON
    	RENVOYER Faux
    FIN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    PROCEDURE LookForID(gsEmail)
     
    //On est bien connecter à la base de données?
    ...
     
     
    SI HLitRecherche(user_principal,email,gsEmail) = Vrai ALORS
    	//On a trouvé le membre
    	id = user_principal.IDuser_principal
    	email = user_principal.email
    	RENVOYER Vrai
    SINON
    	//Rien trouvé
    	RENVOYER Faux
    FIN

    et finalement le bouton Connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    //Remember me, autologin ? 
    SI SC_Login.INT_SansNom1 = 1  ALORS //Se souvenir de moi
    	INIEcrit("Login","id",SC_Login.SAI_SansNom1,gsRepertoireAppData+"\bin\login.ini")
    	INIEcrit(SC_Login.SAI_SansNom1,"user",SC_Login.SAI_SansNom1,gsRepertoireAppData+"\bin\login.ini")
    	INIEcrit(SC_Login.SAI_SansNom1,"pass",Crypte(SC_Login.SAI_SansNom2,xxxxxx,crypteSécurisé),gsRepertoireAppData+"\bin\login.ini")
     
    	SI ErreurDétectée() = Vrai ALORS
    		Erreur(ErreurInfo(errMessage))
    		RETOUR
    	FIN
     
    SINON
    	INIEcrit("Login","id","",gsRepertoireAppData+"\bin\login.ini")
    	INIEcrit(SC_Login.SAI_SansNom1,"user","",gsRepertoireAppData+"\bin\login.ini")
    	INIEcrit(SC_Login.SAI_SansNom1,"pass","",gsRepertoireAppData+"\bin\login.ini")
    FIN
     
    SI INT_SansNom2 = 1 ALORS //Connexion automatique
    	INIEcrit(SC_Login.SAI_SansNom1,"autologin","1",gsRepertoireAppData+"\bin\login.ini")
    SINON
    	INIEcrit(SC_Login.SAI_SansNom1,"autologin","0",gsRepertoireAppData+"\bin\login.ini")
    FIN
     
     
    //On connecte
     
    SI gbStatutconnexion = Vrai ALORS
    //Tous est beau, on connecte
    SI Me.connect() = Vrai ALORS
    	Utilise(FEN_Main_v2)
    SINON
    	Erreur("Impossible de se connecter avec votre identifiant. Veuillez contactez le support technique ou un administrateur du réseau.")
    	RETOUR
    FIN
    SINON
    	Erreur(gsStatutConnexionError)
     
    FIN


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    PROCEDURE connect()
     
    SI id = "" ALORS
    	SI LookForID(email) = Faux ALORS
    		Erreur("Impossible de lire vos informations profiles. Vérifiez votre connexion Internet et réessayer")
    		RENVOYER Faux
    	FIN
    FIN
     
    ChangeOnlineStatut(Vrai) 
     
    //Obtien information du membre
    Nom = user_principal.Nom
    Prénom = user_principal.Prénom
    email = user_principal.email
    fullname = user_principal.Prénom+" "+user_principal.Nom
    photo = dChargeImage(user_principal.Photo,imgConvertir)
    DOB= user_principal.DOB
    Rôle = user_principal.Rôle
    Genre = user_principal.Gender
    Is_Active = Vrai
     
     
    SI PAS HLitRecherche(user_credential,user_fkid,id) ALORS
    	Erreur("Une erreur est survenue lors de la lecture dans la base de données. Vérifier votre connexion Internet et réessayer.")
    	RENVOYER Faux
    SINON
    	user_credential.attempt =0
    	HModifie(user_credential)
    FIN
     
    RENVOYER Vrai
    Tu en as assez pour bien t'amuser

Discussions similaires

  1. [Débutant] impossible de créer des evenement pour mes boutons sur une page asp
    Par Msysteme dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/05/2014, 13h27
  2. Evenements désactivés pour les boutons
    Par premiumbfd dans le forum ASP.NET
    Réponses: 3
    Dernier message: 21/11/2008, 10h06
  3. inputtext et 2 evenement pour le bouton
    Par krikete13 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/06/2007, 21h02
  4. Réponses: 20
    Dernier message: 19/12/2004, 18h52
  5. [VB6] attendre un événement pour continuer l'exécution
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 12/11/2002, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo