php – 如何验证Google Recaptcha V3响应
发布时间:2020-12-13 13:08:04 所属栏目:PHP教程 来源:网络整理
导读:如何在客户端和服务器端(php)中集成Google reCAPTCHA版本3.以下代码用于显示recaptcha,但它不能正常工作.如何进行这种集成. htmlhead script src='https://www.google.com/recaptcha/api.js?render=6Le7-FkUAAAAADDSsTVBvpoUB5MkesNKgPVemFf-UD'/script/head
如何在客户端和服务器端(php)中集成Google reCAPTCHA版本3.以下代码用于显示recaptcha,但它不能正常工作.如何进行这种集成.
<html> <head> <script src='https://www.google.com/recaptcha/api.js?render=6Le7-FkUAAAAADDSsTVBvpoUB5MkesNKgPVemFf-UD'></script> </head> <body> <script> grecaptcha.ready(function() { grecaptcha.execute('6Le7-FkUAAAAADDSsTVBvpoUB5MkesNKgPVemFf-UD',{ action: 'action_name' }); }); </script> <form action="verify.php" method="post"> <input type="text" name="name" placeholder="Your name" required> <input type="email" name="email" placeholder="Your email address" required> <textarea name="message" placeholder="Type your message here...." required></textarea> <input type="submit" name="submit" value="SUBMIT"> </form> </body> </html> Verify.php <?php if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) { //your site secret key $secret = '6Le7-FkUAAAAAAJq065QqoXNvqJrtmlezcmvFMxHD'; //get verify response data $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']); $responseData = json_decode($verifyResponse); if($responseData->success): print_r("Working Fine"); exit; else: print_r("No valid Key"); exit; endif; } else { print_r("Not Working Captcha"); exit; } ?> <html> <head> <script src='https://www.google.com/recaptcha/api.js?render=6Le7-FkUAAAAADDSsTVBvpoUB5MkesNKgPVemFf-UD'></script> </head> <body> <script> // when form is submit $('form').submit(function() { // we stoped it event.preventDefault(); // needs for recaptacha ready grecaptcha.ready(function() { // do request for recaptcha token // response is promise with passed token grecaptcha.execute('6Le7-FkUAAAAADDSsTVBvpoUB5MkesNKgPVemFf-UD',{action: 'create_comment'}).then(function(token) { // add token to form $('form').prepend('<input type="hidden" name="token" value="' + token + '">'); $('form').prepend('<input type="hidden" name="action" value="create_comment">'); // submit form now $('form').unbind('submit').submit(); });; }); }); </script> <form action="verify.php" method="post"> <input type="text" name="name" placeholder="Your name" required > <input type="email" name="email" placeholder="Your email address" required> <textarea name="message" placeholder="Type your message here...." required></textarea> <input type="submit" name="submit" value="SUBMIT"> </form> </body> </html> PHP $token = $_POST['token']; $secret = 'ur secret'; $action = $_POST['action']; // now you need do a POST requst to google recaptcha server // url: https://www.google.com/recaptcha/api/siteverify // with data secret:$secret and response:$token (ask google how do a post request from php for details) // anweser from server (response from google recaptcha server) will be json object with field "success" (true/false) and "action" for comparison (==) and score (number from 0.0 - 1.0) 0.5 > is a bot and 0.5 < is a human... detailed here https://developers.google.com/recaptcha/docs/v3#api-response 你可以为每个请求指定动作名称(create_post,update_post,create_comment ……) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |