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

AJAX Discussion :

[AJAX] captcha en ajax


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2006
    Messages : 71
    Par défaut [AJAX] captcha en ajax
    bonjours, j'ai mis ce captcha, par contre je souahite qu'il soit valider ou pas dès la sortie de l'input du capcha, je ne sais pas trop comment je doit faire

    Code php : 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
    99
    <?php
    /* ////////////////////
        INITIALISATION
    //////////////////// */
     
    /* Démarrage d'une session qui va nous permettre de stocker la valeur à recopier. */
    session_start(); // session_start() se place toujours avant toute sortie vers la page web
     
    /* Chemin absolu vers le dossier */
    if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/');
     
    /*
    Création d'une fonction pour générer la chaîne aléatoire à recopier (sans cryptage) :
    - strlen() retourne la taille de la chaine en paramètre
    - mt_rand(a, b) génère un nombre aléatoire entre a et b compris : cette fonction est plus rapide que rand() de la bibliothèque standard
    - $chars{0} retourne le premier caractère de la chaîne $chars, $chars{1} le deuxième ...
    */
    function getCode($length) {
        $chars = '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmonpqrstuvwxyz'; // Certains caractères ont été enlevés car ils prêtent à confusion
        $rand_str = '';
        for ($i=0; $i<$length; $i++) {
            $rand_str .= $chars{ mt_rand( 0, strlen($chars)-1 ) };
        }
        return $rand_str;
    }
     
    /* Stockage de la chaîne aléatoire de 5 caractères obtenue */
    $theCode = getCode(5);
     
    /* Cryptage de la chaine avec md5() avant de la stocker dans la variable de session $_SESSION['captcha'] de la session en cours.
    C'est à cette variable qu'on va comparer le code entré par l'utilsateur dans le formulaire. */
    $_SESSION['captcha'] = md5($theCode);
     
    /* Afin de traiter les caractères séparément, on les stocke un par un dans des variables. */
    $char1 = substr($theCode,0,1);
    $char2 = substr($theCode,1,1);
    $char3 = substr($theCode,2,1);
    $char4 = substr($theCode,3,1);
    $char5 = substr($theCode,4,1);
     
    /*
    glob() retourne un tableau répertoriant les fichiers du dossier 'fonts', ayant l'extension .ttf ( pas .TTF ! ).
    Vous pouvez donc ajouter autant de polices TrueType que vous désirez, en veillant à les renommer.
    */
    $fonts = glob('fonts/*.ttf');
     
    /* //////////////////////////////
        TRAITEMENT DE L'IMAGE
    ////////////////////////////// */
     
    /*
    imagecreatefrompng() crée une nouvelle image à partir d'un fichier PNG.
    Cette nouvelle $image va être ensuite modifiée avant l'affichage.
     */
    $image = imagecreatefrompng('img\captcha\captcha.png');
     
    /*
    imagecolorallocate() retourne un identifiant de couleur.
    On définit les couleurs RVB qu'on va utiliser pour nos polices et on les stocke dans le tableau $colors[].
    Vous pouvez ajouter autant de couleurs que vous voulez.
    */
    $colors=array ( imagecolorallocate($image, 131,154,255),
                    imagecolorallocate($image, 89,186,255),
                    imagecolorallocate($image, 155,190,214),
                    imagecolorallocate($image, 255,128,234),
                    imagecolorallocate($image, 255,123,123) );
     
    /* Création d'une petite fonction qui retourne une VALEUR aléatoire du tableau reçu en paramètre. */
    function random($tab) {
        return $tab[array_rand($tab)];
    }
     
    /*
    Mise en forme de chacun des caractères et placement sur l'image.
    imagettftext(image, taille police, inclinaison, coordonnée X, coordonnée Y, couleur, police, texte) écrit le texte sur l'image.
    */
    imagettftext($image, 28, -10, 0, 37, random($colors), ABSPATH .'/'. random($fonts), $char1);
    imagettftext($image, 28, 20, 37, 37, random($colors), ABSPATH .'/'. random($fonts), $char2);
    imagettftext($image, 28, -35, 55, 37, random($colors), ABSPATH .'/'. random($fonts), $char3);
    imagettftext($image, 28, 25, 100, 37, random($colors), ABSPATH .'/'. random($fonts), $char4);
    imagettftext($image, 28, -15, 120, 37, random($colors), ABSPATH .'/'. random($fonts), $char5);
     
    /* //////////////////////////////
        FIN => ENVOI DE L'IMAGE
    ////////////////////////////// */
     
    /*
    Comme c'est le fichier image.php et non captcha.png qui va être appelé,
    on envoie un en-tête HTTP au navigateur via header() pour lui indiquer
    que image.php est bien une image au format PNG.
    */
    header('Content-Type: image/png');
     
    /* .. et on envoie notre image PNG au navigateur. */
    imagepng($image);
     
    /* L'image ayant été envoyée, on libère toute la mémoire qui lui est associée via imagedestroy(). */
    imagedestroy($image);
    ?>


    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <fieldset>
                    <h4>Sécurité <span style="color: #666; font-weight: normal;">(afin d'eviter les inscriptions automatisées)</span></h4>
                    <div><!-- (JavaScript) Changer d'image à la volée si elle est illisible  -->
                      <a style="cursor:pointer" onClick="document.images.captcha.src='captcha.php?id='+Math.round(Math.random(0)*1000)+1">Actualisé</a> <br><br>
                      <img src="captcha.php" alt="Captcha" id="captcha" />
     
                      <input name="userCode" type="text" id="userCode" />
                    </div><br>
    </fieldset>

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    Commence d'abord par lire un tutoriel sur AJAX.
    Les cours AJAX

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2011, 12h53
  2. [STRUTS][AJAX]Quel framework AJAX avec Struts
    Par woodwai dans le forum Struts 1
    Réponses: 24
    Dernier message: 12/03/2009, 16h19
  3. [AJAX] Captcha, JS qui va trop vite
    Par wikipierre dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/10/2007, 11h55
  4. [AJAX] texte réponse Ajax dans un conteneur div
    Par grinder59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/02/2006, 18h07
  5. [AJAX] Autocomplétion + méthode Ajax
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/10/2005, 16h24

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