Sign in to follow this  
Kevinou

Tutoriel - ReCaptcha 2015

1 post in this topic

Bonjour Jeu.Video. 

Dans ce tutoriel, je vous propose de découvrir comment mettre en place reCAPTCHA pour vos formulaires PHP. reCAPTCHA propose de filtrer le spam en demandant aux utilisateurs d'identifier un texte sur une image.

La première étape est donc de créer et de configurer un captcha pour votre site en vous rendant dans le panneau d'administration : https://www.google.com/recaptcha/admin#list. Il est important de mettre un nom de domaine qui correspond à votre site web. Vous obtiendrez alors 2 informations importantes : La clef de site et la clef secrète.

Mettre en place le formulaire

Pour mettre en place le nouveau reCAPTCHA il faut commencer par importer le javascript dans la partie head de votre site :






Ensuite il vous suffit de créer le code HTML qui va contenir notre clef de site

[/code] [color=#404852][size=medium][font=Open Sans]Cette [i][font=Open Sans]div[/font][/i] sera automatiquement remplacée par le captcha que les utilisateur vont devoir remplir.[/font][/size][/color] [color=#404852][size=xx-large][font=Open Sans]Vérifier si le captcha a bien été rempli[/font][/size][/color] [color=#404852][size=medium][font=Open Sans]Si vous essayez de soumettre le formulaire vous remarquerez une clef [b][font=Open Sans]g-recaptcha-response[/font][/b], c'est cette clef qui va nous permettre de valider la saisie de l'utilisateur. Pour savoir si cette clef est viable il suffit de demander à l'API : [font=Open Sans]https://www.google.com/recaptcha/api/siteverify[/font] en ajoutant les arguments suivant[/font][/size][/color]
  • [font=Open Sans][b]secret[/b], votre clef secrète[/font]
  • [font=Open Sans][b]response[/b], le code de réponse donné par le captcha (g-recaptcha-response)[/font]
  • [font=Open Sans][b]remoteip[/b], l'ip de l'utilisateur (optionnel)[/font]
[color=#404852][size=medium][font=Open Sans]Pour appeller cette api nous allons utiliser curl, et si l'extension n'est pas disponible nous utiliserons un bon vieux file_get_contents()[/font][/size][/color]
[code]function isValid($code, $ip = null) {    if (empty($code)) {        return false; // Si aucun code n'est entré, on ne cherche pas plus loin    }    $params = [        'secret'    => CLEF_SECRETE,        'response'  => $code    ];    if( $ip ){        $params['remoteip'] = $ip;    }    $url = "https://www.google.com/recaptcha/api/siteverify?" . http_build_query($params);    if (function_exists('curl_version')) {        $curl = curl_init($url);        curl_setopt($curl, CURLOPT_HEADER, false);        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);        curl_setopt($curl, CURLOPT_TIMEOUT, 1);        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // Evite les problèmes, si le ser        $response = curl_exec($curl);    } else {        // Si curl n'est pas dispo, un bon vieux file_get_contents        $response = file_get_contents($url);    }    if (empty($response) || is_null($response)) {        return false;    }    $json = json_decode($response);    return $json->success; }

Le code est relativement simple et consiste seulement à appeler l'URL en question avec les paramètres correspondants et de décoder le json que l'on obtient en retour. On cherche ensuite à connaitre la valeur de success qui nous donne true si le captcha et valide et false sinon.

Cordialement, bon développement à vous.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this