Google Recaptcha:如何强制CURL覆盖file_get_contents?

时间:2017-07-14 11:50:09

标签: php curl recaptcha

我需要在google recaptcha中使用cURL方法而不是file_get_contents()(使用mysqli和PHP)

默认情况下,file_get_contents()用作文件RequestMethod/Post.php中的请求方法。 但是在服务器中,allow_url_fopen设置为0(关闭),因此我无法使用此重新绑定服务,因此会引发No wrapper found错误。 CURL是我应该选择的唯一方式。

不允许更改allow_url_fopen标志。不能在htaccess中执行,它将无法正常工作。

我需要使用文件RequestMethod/CurlPost.php中的CURL请求方法并覆盖默认的file_get_contents()如何将/强制cURL作为默认请求方法?

require_once __DIR__ . '/recaptcha/autoload.php';
$recaptcha = new \ReCaptcha\ReCaptcha('_SECRET_KEY_');

在提交表格后,我有:

$resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
if ($resp->isSuccess()) {
 //my code
}

我想,如果默认方法( file_get_contents )失败,那么替代工作方法应该自动用作请求方法,但事实并非如此。这是我正在使用https://github.com/google/recaptcha

的库

1 个答案:

答案 0 :(得分:0)

您需要将新请求方法传递给构造函数:

$recaptcha = new \ReCaptcha\ReCaptcha(
    '_SECRET_KEY_',
    new \ReCaptcha\RequestMethod\CurlPost()
);

请参阅https://github.com/google/recaptcha/blob/master/src/ReCaptcha/ReCaptcha.php#L59