Google ReCaptcha 2致命错误:找不到"ReCaptcha\RequestMethod\Post"类

bub*_*din 0 php wampserver recaptcha

我是运行wamp的本地计算机上的google recaptcha v2.一切看起来都很好,除了它应该验证表格时它一直在死

我收到这个错误:

Fatal error: Class 'ReCaptcha\RequestMethod\Post' not found in C:\wamp\www\php\contactForm\Captcha\ReCaptcha.php on line 73
Run Code Online (Sandbox Code Playgroud)

我几乎从谷歌复制/粘贴了示例代码:

if (!empty($human)) {
    require_once('Captcha\ReCaptcha.php');
    $recaptcha = new \ReCaptcha\ReCaptcha($secret);
    $resp = $recaptcha->verify($human, $remoteIp);
   if ($resp->isSuccess()) {
    // verified!
Run Code Online (Sandbox Code Playgroud)

我已经从google github(https://github.com/google/recaptcha/tree/master/src/ReCaptcha)下载了文件,并且只是使用了文件夹/文件名称.我的验证文件上面有一个文件夹,但为了以防万一,我还尝试将文件复制到与验证脚本相同的文件夹中.

有任何想法吗?

Rel*_*Rel 5

谷歌银行似乎每个人都使用composer来安装他们的存储库.说实话,这是他们在github repo上给出的唯一安装方法readme.md https://github.com/google/recaptcha

当您使用composer安装google recaptcha等软件包时,软件包可以选择在https://github.com/google/recaptcha/blob/master/composer.json中注册自动加载器.

"autoload": {
    "psr-4": {
        "ReCaptcha\\": "src/ReCaptcha"
    }
},
Run Code Online (Sandbox Code Playgroud)

这样,您必须在脚本中包含所有包类的访问权限,即编译器在安装包时生成的autoload.php.

第34行:https://github.com/google/recaptcha/blob/master/examples/example-captcha.php

// Initiate the autoloader.
require_once __DIR__ . '/../vendor/autoload.php';
Run Code Online (Sandbox Code Playgroud)

自动加载器是一个在要求php时尝试加载类的函数.在这种情况下,它将命名空间映射到磁盘上的目录结构.

有关php自动加载器的更多信息,请访问:http://php.net/autoload,此处:http://www.php-fig.org/psr/psr-4/examples/

如果你不想使用作曲家及其自动加载功能,你可能会觉得这很有用:https://github.com/abraham/twitteroauth它有一个你可以借用的autoload.php,它可以加载没有作曲家的类.

  1. 将它的副本放在recaptcha顶级文件夹(其中包含README.md的文件夹)中
  2. 用12替换第12行 $prefix = 'ReCaptcha\\';
  3. 用15替换第15行 $base_dir = __DIR__ . '/src/ReCaptcha/';
  4. 在代码中的某处需要autoloader.php(此文件)
  5. 在代码中实例化你的ReCaptcha对象 new ReCaptcha\ReCaptcha($RECAPTCHASECRETKEY);


150*_*per 5

我希望我不会受到猛烈抨击,但我发现如果你需要所有按照设计工作的文件而不使用自动加载器或编写器.

//GOOGLE RECAPTCH CODE
require_once('/cgi-bin/src/ReCaptcha/ReCaptcha.php');
require_once('/cgi-bin/src/ReCaptcha/RequestMethod.php');
require_once('/cgi-bin/src/ReCaptcha/RequestParameters.php');
require_once('/cgi-bin/src/ReCaptcha/Response.php');
require_once('/cgi-bin/src/ReCaptcha/RequestMethod/Post.php');
require_once('/cgi-bin/src/ReCaptcha/RequestMethod/Socket.php');
require_once('/cgi-bin/src/ReCaptcha/RequestMethod/SocketPost.php');
$gRecaptchaResponse = $_POST['g-recaptcha-response'];
$secret = 'YOUR SECRET KEY';

$recaptcha = new \ReCaptcha\ReCaptcha($secret);
$resp = $recaptcha->verify($gRecaptchaResponse, $remoteIp);
if ($resp->isSuccess()) {
    //DO ACTION IF SUCCESSFUL
} else {
    $errors = $resp->getErrorCodes();
}
//END OF GOOGLE RECAPTCHA CODE
Run Code Online (Sandbox Code Playgroud)