ReCAPTCHA在本地工作,而不是在实时WordPress站点上工作

时间:2019-01-03 作者:danbdex

您好,我有一个我制作的表单,它可以在本地计算机上运行,但不会在实时服务器上运行get\\u file\\u内容,因为它在响应中返回NULL?

形式:

 <form name="contactUS" action="<?php echo get_template_directory_uri(); ?>/mail/contact-us-mail-recaptcha.php" method="post">

<input name="name" type="text" placeholder="Name">
<input name="email" type="email" placeholder="Email">
<input name="message" type="textarea" placeholder="Please describe your project and the work to be done?">
<div class="g-recaptcha" data-sitekey="<site key>"></div>
<button type="submit" class="nsc-button">Submit</button>
</form>
服务器代码:

<?php

$recaptcha_secret = \'<secret key>\';
$ip = $_SERVER[\'REMOTE_ADDR\'];
$captchaResponse = $_POST[\'g-recaptcha-response\'];

$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$captchaResponse); 

$result = json_decode($response, true);

if($result == true){

//do success
}else {

    var_dump(\'ip:\' . $ip);
    var_dump(\'captchaResponse:\' . $captchaResponse);
    var_dump(\'response:\' . $response);
    var_dump(\'result:\' . $result);
    exit;

}

1 个回复
SO网友:Krzysiek Dróżdż

提示如果已启用fopen包装器,则URL可以用作此功能的文件名。有关如何指定文件名的详细信息,请参阅fopen()。请参阅受支持的协议和包装器,以获取有关各种包装器具有哪些功能、使用说明以及它们可能提供的任何预定义变量的信息的链接。

所以很可能allow_url_fopen 在服务器上设置为false。

但是你不应该使用这个函数-使用wp_remote_get 相反

相关推荐

集成reCAPTCHA和wp_SignOn-需要什么?

我一直在使用wp_signon 长期在项目中://Do the actual login for WP User $creds = array(); $creds[\'user_login\'] = $skuser_name; $creds[\'user_password\'] = $skuser_pass; $creds[\'remember\'] = true; $user = wp_signon( $creds, false ); 这已经起作用很长