【教程】超简单的HCaptcha验证码配置(PHP版)
前言
大家在网上冲浪这么多年,肯定或多或少的遇到过类似下面这种的验证码,要么是红绿灯,要么就是斑马线……
不知道你们好奇过怎么来的没有
现在我告诉你们那些都是来自Google reCaptcha
但是Google的访问情况大家都是知道的…要么很慢,要么直接访问不了
然后hcaptcha出现了,据hcaptcha他们所说,他们不仅支持reCaptcha的所有功能,还更安全。
其他什么的感知不强,最主要是国内能正常访问,能提供人机验证服务才是最主要的
正文
注册
打开 注册界面 注册即可
然后创建一个新网站获取 sitekey 和 secret
部署
部署分为前端和后端
前端
<script src='https://www.hCaptcha.com/1/api.js' async defer></script>
把上面代码放进HTML的head标签里,然后再把下面的验证码显示代码放在你的表单底侧或者其他想添加的地方然后前端部署就完成了
<div class="h-captcha" data-sitekey="你的sitekey"></div>
然后把你的表单内容设置POST到hcaptcha.php即可
后端
新建一个PHP文件,命名为 hcaptcha.php 内容如下
<?php $Msg=""; if (isset($_POST['submit'])){ if (isset($_POST['h-captcha-response']) && !empty($_POST['h-captcha-response'])){ // get verify response $data = array( 'secret' => "这里填你的secret", 'response' => $_POST['h-captcha-response'] ); $verify = curl_init(); curl_setopt($verify, CURLOPT_URL, "https://hcaptcha.com/siteverify"); curl_setopt($verify, CURLOPT_POST, true); curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($verify, CURLOPT_RETURNTRANSFER, true); $verifyResponse = curl_exec($verify); $responseData = json_decode($verifyResponse); if ($responseData->success){ //验证码验证成功 //这里写你的代码 } else { //验证失败 } } else{ //没有完成验证码 } } ?>
至此全文结束,下方附一个整合DEMO,替换sitekey和secret即可使用
DEMO
index.php
<?php $Msg=""; if (isset($_POST['submit'])){ if (isset($_POST['h-captcha-response']) && !empty($_POST['h-captcha-response'])){ // get verify response $data = array( 'secret' => "0x520C0021E492973108692b184ea0D04B952687b4", 'response' => $_POST['h-captcha-response'] ); $verify = curl_init(); curl_setopt($verify, CURLOPT_URL, "https://hcaptcha.com/siteverify"); curl_setopt($verify, CURLOPT_POST, true); curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($verify, CURLOPT_RETURNTRANSFER, true); $verifyResponse = curl_exec($verify); $responseData = json_decode($verifyResponse); if ($responseData->success){ //验证码验证成功 $Msg = "验证成功"; } else { $Msg = "验证失败"; } } else{ $Msg="未完成验证码"; } } ?> <html> <head> <title>demo</title> <meta name="viewport" content="width=device-width,initial-scale=1"> <script src="https://www.hCaptcha.com/1/api.js" async defer></script> </head> <body> <div> <h2>表单</h2> <div> <form action="" method="POST"> <input type="email" class="text" placeholder="邮箱" name="mail" > <input type="password" class="text" placeholder="密码" name="pwd" > <div class="h-captcha" data-sitekey="d037e381-43e2-4906-990f-0a89f75b9ca9"></div> <a><?php echo $Msg?></a> <input type="submit" name="submit" value="提交"> </form> </div> </div> </body> </html>