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

JavaScript Discussion :

Vérifier une identification à la volée.


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut Vérifier une identification à la volée.
    Bonjour à tous, je me décide enfin à demander de l'aide car ça fait un moment que je galère.
    Je souhaite vérifier à la voler une identification.
    C-a-d si l'utilisateur saisis un mot de pass ou password pas bon un message rouge s'affiche automatiquement à coté signalant l'erreur.
    J'arrive à faire ceci, le problème c'est que mon formulaire est quand même envoyé.
    voici mon code
    le formulaire ressemble à ca :
    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
     
    <form method="post" action="index.php?p=verifLogin" onsubmit="return check_login_inline()" >
       <table border="0"  align="center" >
        <tr>
         <td id="result_login" style="width:250px; text-align:right;" ></td>
         <td style="text-align:left;  width:80px;" >
          <input size="10" type="text" id="login" name="login" value="login" onFocus="if(this.value=='login')this.value=''" onBlur="if(this.value=='')this.value='login'">
         </td>
          <td style=" text-align:left;  width:80px;" >
          <input size="10" type="password" id="password" name="password" value="pass" onFocus="if(this.value=='pass')this.value=''" onBlur="if(this.value=='')this.value='pass'">
         </td>
         <td  style=" text-align:left; width:30px;" >
          <input type="submit" name="submit" value="Ok">
         </td>
        </tr>
     
       </table>
    </form>
    Ma fonction check login la voila:

    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
     
    function check_login_inline()
    {
    	if($F("password").length != 0 && $F("login").length != 0 )
    	{
     
    				//Verification du mot de pass et password					
     
    				var url = "./ajax_verifLogin.php";
    				var params = {login: $F("login") , pass:$F("password")};
    				// --- APPEL DE LA PAGE ASYNCHRONE ---
    				new Ajax.Request( url, {parameters: params,onComplete:verif_retour});
    				return false;
     
    	}
    }
    Et ma fonction verif_retour qui affiche bien le message d'erreur en rouge
    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
     
    function verif_retour(reponsejson)
    {
     
    var data=reponsejson.responseText.evalJSON();
    	if(data.res=="ok")
    	{
    		return true;
    	}
     
    	if(data.res=="login")
    	{
    		$("result_login").innerHTML="<span class='red'>Ce pseudo est inexistant</span>";
    	}
    	else
    	{
    		$("result_login").innerHTML='<span class="red">Ce mot de pass est erron&eacute;</span>';
    	}
    	return false;
    }
    Donc là les messages d'erreurs s'affichent bien, par contre quand le login+pass est OK le formulaire n'est pas envoyé à ma page index.php?p=verifLogin qui doit se charger de mettre à jour les variables de session puis de faire une redirection...

    Auriez vous des conseils à me donner ?
    merci d'avance

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    J'arrive à faire ceci, le problème c'est que mon formulaire est quand même envoyé.
    Ce ne serait pas putôt l'inverse ?

    Je crois que ton erreur est écrite dans ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function check_login_inline()
    {
    	if($F("password").length != 0 && $F("login").length != 0 )
    	{
    ...
    				// --- APPEL DE LA PAGE ASYNCHRONE ---
    				new Ajax.Request( url, {parameters: params,onComplete:verif_retour});
    				return false;
    	}
    }
    Ta requête Ajax est asynchrone donc n'attend pas d'avoir le résultat pour continuer. A chaque fois tu fais un return false .
    Parmi les solutions possibles, tu peux faire une requête synchrone, ou encore en cas de succès tu peux armer un flag pour prévenir que tout est ok et tu génères un nouveau submit, en utilisant le flag pour court-circuiter check_login_inline.

    ERE

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    Bonsoir merci pour ta réponse.
    En rendant ma requête syncrhone mon return false sera exécuté uniquement après le retour d' Ajax ?car le pb si je mettais pas de return false le formulaire était tout le temps soumis même dans le cas ou il y avait un pb didentifiant.
    Par rapport a la 2ème solution que tu me proposes tu aurais pas un petit exemple pour illustrer? car je n'ai pas bien compris.
    Merci bye

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    Perso, je pense qu'il vaut mieux rester asynchrone. Cela doit donner à peu près ça (commentaires dans le code,ne pas oublier d'ajouter des attributs name et id au formulaire)
    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
    //<form method="post" 
    //     name="frm" id="frm"
    //     action="index.php?p=verifLogin" 
    //     onsubmit="return check_login_inline()" >
     
    //est on authentifié ? Par défaut, non !
    var isLoginAuthentifie=false;
     
    function check_login_inline()
    {
      //si on est authentifié, on accepte le submit
      if(isLoginAuthentifie) {
        isLoginAuthentifie = false; //précaution
        return true;
      }  
     
    	if($F("password").length != 0 && $F("login").length != 0 )
    	{
    				//Verification du mot de pass et password					
    				var url = "./ajax_verifLogin.php";
    				var params = {login: $F("login") , pass:$F("password")};
    				// --- APPEL DE LA PAGE ASYNCHRONE ---
    				new Ajax.Request( url, {parameters: params,onComplete:verif_retour});
    	}
    	//dans tous les cas on refuse le submit
    	return false;
    }
     
    function verif_retour(reponsejson)
    {
     
    var data=reponsejson.responseText.evalJSON();
    	if(data.res=="ok")
    	{
    		 //cool on peut réellement envoyer
         isLoginAuthentifie = true;
    		 document.getElementById("frm").submit();
    		 return;
    	}
     
    	if(data.res=="login")
    	{
    		$("result_login").innerHTML="<span class='red'>Ce pseudo est inexistant</span>";
    	}
    	else
    	{
    		$("result_login").innerHTML='<span class="red">Ce mot de pass est erron&eacute;</span>';
    	}
    }

    Bon dev,

    ERE

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    Bonjour
    Cette solution semble fonctionner parfaitement
    En plus l'avantage, c'est que si JAVA est désactivé, la personne pourra être logé en passant par la page verifLogin classique il me semble ?

    Merci beaucoup, je ne savais pas renvoyer submit d'un form à partir de javascript , ca me servira à l'avenir !

    bye et encore merci

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    J'ai crié victoire trop vite lol.
    Alors j'ai 2 pb du coup.
    ---> le premier ; un problème de header, qui est déjà envoyé, donc ma page verifLogin.php qui à pour rôle de mettre les variables de SESSION a jour et de rediriger vers Acceuil ne le fais pas .

    ---> Le 2eme plus ennuyeux, lorsque je me connecte/Deconnecte si je veux me reconnecter ensuite, il ne se passe rien.
    Si je supprime le cache,historique etc.. je peux à nouveau me connecter une fois.

  7. #7
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Citation Envoyé par rockt13 Voir le message
    J'ai crié victoire trop vite lol.
    Alors j'ai 2 pb du coup.
    ---> le premier ; un problème de header, qui est déjà envoyé, donc ma page verifLogin.php qui à pour rôle de mettre les variables de SESSION a jour et de rediriger vers Acceuil ne le fais pas .
    C'est de l'ajax pas une requête standard ! Tu ne peux pas renvoyer une header de redirection !

    ---> Le 2eme plus ennuyeux, lorsque je me connecte/Deconnecte si je veux me reconnecter ensuite, il ne se passe rien.
    Si je supprime le cache,historique etc.. je peux à nouveau me connecter une fois.
    Gère la variable isLoginAuthentifie = false; //précaution

    ERE

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    lorsque je submit avec return = true, ca devrais se faire normalement comme si je l'avais pas appelé par ajax pourtant non?

    Pour la variable isLoginAuthentifie , je l'affiche à chaque fois, j'ai l'impression que c'est le getElement..("frm").submit, qui s'execute pas tout le temps..

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/04/2007, 16h53
  2. Comment afficher une image à la volée via http ?
    Par reg11 dans le forum Web & réseau
    Réponses: 4
    Dernier message: 30/06/2005, 09h44
  3. Vérifier une liste de choix
    Par nebule dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/12/2004, 19h06
  4. Vérifier une url, altenatives à fsockopen
    Par gendo dans le forum Langage
    Réponses: 4
    Dernier message: 14/09/2004, 21h35

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