Kevinou Posted August 16, 2015 Report Posted August 16, 2015 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.
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now