吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1807|回复: 9
收起左侧

[已解决] [PHP]调用谷歌recaptcha验证码出错【解决方案见置顶帖】

[复制链接]
LeoWang2021 发表于 2021-8-2 18:16
本帖最后由 LeoWang2021 于 2021-8-3 14:08 编辑

使用PHP制作recaptcha验证时,提交验证码api出现了报错,希望有做过类似项目的指导一下,谢谢 Snipaste_2021-08-02_17-14-31.png
代码如下:
文件名:index.html
[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <script src='https://recaptcha.net/recaptcha/api.js'></script>
</head>
<body>

    <form action="confirm.php" method="post">
        <div class="g-recaptcha" data-sitekey="6Lep-8wbAAAAAHIYxFzMPcdaZteYV3i39R8UcwLa"></div>

        <p><button class="btn btn-primary" type="submit">Register</button>
    </form>
</body>
</html>

文件名:confirm.php
[PHP] 纯文本查看 复制代码
<span style="font-size:14px;"><!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?php
    function send_post($url, $post_data)
    {
        $postdata = http_build_query($post_data);
        $options = array(
            'http' => array(
                'method' => 'POST',
                'header' => 'Content-type:application/x-www-form-urlencoded',
                'content' => $postdata,
                'timeout' => 15 * 60 // 超时时间(单位:s)
            )
        );
        $context = stream_context_create($options);
        $result = file_get_contents($url, false, $context);
        return $result;
    }

    $post_data = array(
        'secret' => '6Lep-8wbAAAAAMst122U4mSLT2qGGfF5Cw3K****',
        'response' => $_POST["g-recaptcha-response"]);
    $recaptcha_json_result = send_post('http://recaptcha.net/recaptcha/api/siteverify', $post_data);
    $recaptcha_result = json_decode($recaptcha_json_result);
    //在这里处理返回的值
    var_dump($recaptcha_result);
    ?>
</head>
<body>
<?php 
        if($recaptcha_result['success'])
        {
                echo '校验成功';
        }
        else
        {
                echo '校验失败';
        }
?>
</body>
</html>
</span>

或下载压缩包https://wwa.lanzoui.com/iGIZPs5fscd

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| LeoWang2021 发表于 2021-8-3 13:30
本帖最后由 LeoWang2021 于 2021-8-3 14:16 编辑

最佳答案(楼主自行解决)
本链接
无名小银 发表于 2021-8-2 18:19
 楼主| LeoWang2021 发表于 2021-8-2 18:49
无名小银 发表于 2021-8-2 18:19
你把请求网址改成https试试看
https://recaptcha.net/recaptcha/api/siteverify

Snipaste_2021-08-02_18-45-41.png
报错反而更多了
 楼主| LeoWang2021 发表于 2021-8-2 18:50
本帖最后由 LeoWang2021 于 2021-8-2 18:55 编辑
无名小银 发表于 2021-8-2 18:19
你把请求网址改成https试试看
https://recaptcha.net/recaptcha/api/siteverify

理论上我的电脑应该是可以使用recaptcha的,因为我用自己电脑搭的discuz(就是吾爱的源码)是可以正常使用谷歌验证码插件的,所以应该是代码哪里出了问题
这是discuz插件里的代码:
[PHP] 纯文本查看 复制代码
public function check($value, $idhash) {
		global $_G;
		if(!isset($_G['cache']['plugin'])) {
			loadcache('plugin');
		}
		if(!isset($_GET['g-recaptcha-response']) || !$_GET['g-recaptcha-response'] || !$_G['cache']['plugin']['cdc_recaptcha']['pubkey'] || !$_G['cache']['plugin']['cdc_recaptcha']['privkey']) {
			return false;
		}
		$gdomain = $_G['cache']['plugin']['cdc_recaptcha']['domain'];
		$gdomain = $gdomain?intval($gdomain):2;
		$postdata = array('secret'=>$_G['cache']['plugin']['cdc_recaptcha']['privkey'],'response'=>$_GET['g-recaptcha-response'],'remoteip'=>$_G['clientip']);
		$resp = dfsockopen('https://'.$this->domainlist[$gdomain].'/recaptcha/api/siteverify',0,$postdata);
		if(json_decode($resp,true)['success']) {
			return true;
		} else {
			return false;
		}
	}

但因为dfsockopen是discuz的内部函数,我用不了
无名小银 发表于 2021-8-2 19:18

你需要使用curl,或者打开服务器上是ssl模块。自行百度下
Jack2002 发表于 2021-8-2 19:47
希望有帮助 https://www.jianshu.com/p/b0d8b288725e
stu2162583 发表于 2021-8-2 19:55
看上去像是接口缺少什么必须参数导致报错
Domado 发表于 2021-8-2 22:24
使用curl来post而不是使用file_get_contents
BestSum 发表于 2021-8-3 00:34
英文大概看了下,说是接口/API/siteverify 请求失败 返回403 forbidden    应该是这个接口的问题吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-13 02:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表