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 :

[AJAX] Captcha, JS qui va trop vite


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de wikipierre
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 230
    Points
    230
    Par défaut [AJAX] Captcha, JS qui va trop vite
    Bonjour,
    J'ai réalisé une Captcha en Ajax et Javascript.
    Avec une série de alert, j'ai pu comprendre que Javascript allait trop vite par rapport a mon Ajax, et j'aurais voulu trouver un moyen de "freiner" JS. Voici mon Code :

    captcha.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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    // CREATING THE REQUEST
    function createRequestObject()
    {
    	try
    	{
    		xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	catch(e)
    	{
    		alert('Sorry, but your browser doesn\'t support XMLHttpRequest.');
    	}
    	return xmlhttp;
    }
     
    var http = createRequestObject();
    var sess = createRequestObject();
     
    // IMAGE REFRESHING
     
    function refreshimg()
    {
    	var url = 'class/captcha/image_req.php';
    	dorefresh(url, displayimg);
    }
     
    function dorefresh(url, callback)
    {
    	sess.open('POST', 'class/captcha/newsession.php', true);
    	sess.send(null);
    	http.open('POST', url, true);
    	http.onreadystatechange = callback;
    	http.send(null);
    }
     
    function displayimg()
    {
    	if(http.readyState == 4)
    	{
    		var showimage = http.responseText;
    		document.getElementById('captchaimage').innerHTML = showimage;
    	}
    }
     
    // SUBMISSION
     
    var capt;
     
    function check()
    {
    	var submission = document.getElementById('captcha').value;
    	var url = 'class/captcha/process.php?captcha=' + submission;
     
    	this.docheck(url, displaycheck);
     
    	cfr = capt;
    	return cfr;
    }
     
    function docheck(url, callback)
    {	
    	http.onreadystatechange = callback;
    	http.open('GET', url, true);
    	http.send(null);
    	return false;
    }
     
    function displaycheck()
    {
    	try
    	{
    		if((http != null) && (http.readyState == 4))
    		{ 
    			if (http.status == 200)
    			{
    				if(http.responseText == 1)
    				{
    					capt = 1;
    					document.getElementById('captcha').className = 'right_element';
    					return true;
    				}
    				else
    				{
    					capt = 0;
    					document.getElementById('captcha').className = 'wrong_element';
    					return true;
    				}
    			}
    		}
    		else
    		{
    			return true;	
    		}
    	}
    	catch(e)
    	{
    		alert(e);	
    	}
    }
    Et la vérification de mon 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
    function frm_comment()
    {
      var form = true;
      var ce = check();
     
     
      if (trim(document.forms["frm"].elements["captcha"].value) == "")
      {
    	document.getElementById('captcha').className = 'wrong_element';
        form = false;
      }  
      else
      {
     
    	alert(ce);
    	if (ce != 1)
    	{
    	    form = false;
    	}
      }
     
      return form;
    }
    Merci de votre aide.

    Cordialement

  2. #2
    Membre actif Avatar de wikipierre
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 230
    Points
    230
    Par défaut
    J'ai trouvé la solution, c'était tout con, il suffisait d'utiliser le mode syncrhone de AJAX en remplacent true par false dans la fonction open dans docheck().

    Merci

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

Discussions similaires

  1. Shell qui se ferme trop vite
    Par Schnuffel dans le forum Général VBA
    Réponses: 2
    Dernier message: 13/06/2012, 08h48
  2. fenêtre qui disparaît trop vite
    Par minerva dans le forum Windows Forms
    Réponses: 6
    Dernier message: 18/10/2010, 12h15
  3. requete qui renvoi trop de resultats ?
    Par highman dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/05/2006, 10h19
  4. Trop vite...
    Par olive-sjs dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/03/2004, 22h51

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