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

Bibliothèques & Frameworks Discussion :

Valider un formulaire avant de lancer connexion [Prototype]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 202
    Par défaut Valider un formulaire avant de lancer connexion
    salut a tous.

    Alors voila, je désire vérifier dans ma base de donnée si le login existe et si le mot de passe est correct avant d'autoriser effectivement le joueur à se connecter. Pour ce faire, merci AJAX et prototype.

    Donc l'action en étapes :
    le joueur tape ses id : si tout ok dans la vérification JS , le formulaire doit partir, sinon bah... il recommence

    Soucis :

    Il faut imbriquer des fonctions et sous fonctions pour parvenir a faire ça, sauf que JS ne veux pas me récupérer mes paramètres d'une fonction à l'autre, et surtout dans le temps imparti: il exécute tout n'importe comment en parallèle.

    Bref, comment faire ?

    Le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form action="<?php echo $this->baseUrl ?>/auth/login" method="post" onsubmit="return verif_login(this);">
    
            <span>Pseudo :</span>
            <span><input type="text" name="login" id="login" value="" maxlength="20"/></span>
            <span>Passe :</span>
            <span><input type="password" name="password" id="password" value="" maxlength="20"/></span>
            <span><input type="submit" name="seConnecter" value="Connexion" /></span>
    le JS :
    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
     
    function verif_login()
            {
     
                var login = $F('login');
                var password = $F('password');
                var chemin = $F('chemin');
     
                if(login == "" || password =="" )
                {
                    Ext.MessageBox.alert('Connexion', "Veuillez remplir les 2 champs.");
                    return false;
                }
                else
                {
     
     
                    //fonction qui vérifie presence login ds la BD
                    var url = chemin+'/auth/verifautorisation';
                    new Ajax.Request(
                    url,
                    {
                          method: 'post',
                          postBody: 'login='+login+'&password='+password,
                          onComplete: function(originalRequest){
                              reponse = originalRequest.responseText;
     
                              if(reponse== "nok")
                              {
                                alert("inconnu");
     
                                return false;
                              }
                              else if(reponse=="pbpass")
                              {
                                 alert("pb de pass");
     
                                return false;
                              }
                              else if(reponse=="ok")
                              {
                                alert("valide");
                                return true;
     
                              }
                          }
     
                    });
     
                }//fin else
            }
    Donc le soucis c'est que le true ou false n'est pas visible de la fonction locale puisque le return se fait dans la sous fonction qui récupère le résultat de la requete asynchrone. Bilan: le formulaire part toujours même sans etre valide car pas de retour du false...

    J'ai essayé pleins de méthodes, mais la je bloque !

    Merci de m'aider a faire cette vérification asynchrone du pass et login !

  2. #2
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 107
    Par défaut
    Hello,

    Il me semble qu'il suffit de passer ton appel ajax en synchrone. C'est a dire dans ton cas d'ajouter le parametre "asynchronous:false" . Ensuite pour récupérer le résultat true ou false, il faut déclarer une variable "globale" est la retourner.

    Donc pour ta méthode ca donnerait:
    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
     
    function verif_login()
            {   
                var login = $F('login');
                var password = $F('password');
                var chemin = $F('chemin');
     
                if(login == "" || password =="" )
                {
                    Ext.MessageBox.alert('Connexion', "Veuillez remplir les 2 champs.");
                    return false;
                }
                else
                {
     
                    var retourAjax = false;
                    //fonction qui vérifie presence login ds la BD
                    var url = chemin+'/auth/verifautorisation';
                    new Ajax.Request(
                    url,
                    {
                          method: 'post',
                          asynchronous:false,
                          postBody: 'login='+login+'&password='+password,
                          onComplete: function(originalRequest){
                              reponse = originalRequest.responseText;
     
                              if(reponse== "nok")
                              {
                                alert("inconnu");
     
                                retourAjax = false;
                              }
                              else if(reponse=="pbpass")
                              {
                                 alert("pb de pass");
     
                                retourAjax = false;
                              }
                              else if(reponse=="ok")
                              {
                                alert("valide");
                                retourAjax = true;
     
                              }
                          }
     
                    });
     
                 return retourAjax;
                }//fin else
            }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 202
    Par défaut
    merci beaucoup c'est exactement et purement ce qu'il me fallait !

    Merci pour cette réponse rapide et sérieuse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Validation de formulaire avant soumission
    Par koudougou dans le forum Symfony
    Réponses: 10
    Dernier message: 01/07/2015, 13h45
  2. Réponses: 1
    Dernier message: 13/08/2013, 23h24
  3. Obliger un visiteur de cliquer sur un liens avant validation du formulaire
    Par mathias59 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/12/2008, 11h45
  4. Réponses: 2
    Dernier message: 26/07/2007, 10h41
  5. [Formulaire]valider un enregistrement avant access
    Par robocop2776 dans le forum IHM
    Réponses: 9
    Dernier message: 24/04/2007, 07h15

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