致命错误:Class'ReCaptcha \ ReCaptcha'

时间:2017-11-22 15:31:29

标签: php html google-api recaptcha

我非常感谢在我的网站中实施reCAPTCHA的一些帮助。我通过更改下载的模板创建了一个简单的单页网站。问题是我的收件箱受到垃圾邮件的打击。有人告诉我reCAPTCHA并想使用它。

我已经在线跟踪了多个示例,在此搜索并按照Google文档进行操作。我遇到了各种错误,并设法解决每一个错误。

我有自己的私钥和密钥,我已经注册了我的实际domain.com和localhost。

我使用的最后一个教程就是这个;

import org.apache.log4j.spi.*;


public class ThreadLoggingFilter extends Filter {
  String threadName;

  public ThreadLoggingFilter(String _threadName){
      this.threadName = _threadName;
  }

  @Override
  public int decide(final LoggingEvent event) {
      if (event.getNDC() != null && event.getNDC().equals(this.threadName)) {
          return ACCEPT;
      }
      return DENY;
  }
}

我使用以下命令将google API库下载到项目的根目录中;

$Server = 'DC1'
$s = New-PSSession -Computer $Server
Invoke-Command -Session $s -ScriptBlock {Import-Module -Name 'ActiveDirectory'}
Import-PSSession -Session $s -Module ActiveDirectory 

If ($env:ComputerName.Substring(5,3) -eq 'dbs')
{
    $TargetOU = 'ou=DB Servers,ou=PRD,ou=Servers,dc=com,dc=company,dc=net'
    $TargetPC = Get-ADComputer -Identity $env:ComputerName
    If ($TargetPC)
    {
        Move-ADObject -Identity $TargetPC -TargetPath $TargetOU -TargetServer $Server
    }
    Else
    {
        Write-Host "Failed to find $env:ComputerName on domain!"
    }
}

Remove-PSSession -Session $s

目前我收到以下错误。

https://bootstrapious.com/p/bootstrap-recaptcha

我已将我的项目上传到gitHub,希望有人可以帮助我并查看。我已从网站上删除了任何敏感信息,但它仍将在您的localhost上运行。

任何帮助或建议将不胜感激。花了几个小时看着它并尝试不同的东西。

git clone -b v1-master https://github.com/google/google-api-php-client.git.

谢谢

2 个答案:

答案 0 :(得分:2)

在我的最后几天尝试,谷歌reCAPTCHA可能会混淆不同的解决方案。这对我有用:

<?php 

 if(isset($_POST['<data here>'])) { 
     $url = 'https://www.google.com/recaptcha/api/siteverify'; 
     $secretkey = "<secret key here>"; 

     $response = file_get_contents($url."?secret=".$secretkey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);         
     $data = json_decode($response); 

     if(isset($data->success) AND $data->success == true) { 

        // enter any code here 

     } else { 
         // False - display error  
         header('Location: /page.php?CaptchaFail=True'); // make sure it's on the same page 
     } 
 } 
 ?> 

确保上面的代码段位于上面包含reCAPTCHA的页面顶部。在HTML doc:

<?php if(isset($_GET['CaptchaFail'])){ ?> 
       <div>Captcha Failed. Please try again!</div> 
<?php } ?> 


<div class="g-recaptcha" data-sitekey="<site key here>"></div>                                     

我使用的上述代码段来自实际上对我有用的YouTube视频 - https://www.youtube.com/watch?v=XjN0j4JQqVI&t=951s

答案 1 :(得分:0)

好的,所以在尝试解决这个问题的许多不同方法后,我终于有了它的工作。

我找到了答案here

我已经提供了一份适用于我的代码副本。

<?php
// require ReCaptcha class
require('../google-api-php-client/src/Google/autoload.php');
//GOOGLE RECAPTCH CODE
require_once('../recaptcha-master/src/ReCaptcha/ReCaptcha.php');
require_once('../recaptcha-master/src/ReCaptcha/RequestMethod.php');
require_once('../recaptcha-
master/src/ReCaptcha/RequestParameters.php');
require_once('../recaptcha-master/src/ReCaptcha/Response.php');
require_once('../recaptcha-
master/src/ReCaptcha/RequestMethod/Post.php');
require_once('../recaptcha-
master/src/ReCaptcha/RequestMethod/Socket.php');
require_once('../recaptcha-
master/src/ReCaptcha/RequestMethod/SocketPost.php');
$gRecaptchaResponse = $_POST['g-recaptcha-response'];
$secret = 'MY_KEY';

$recaptcha = new \ReCaptcha\ReCaptcha($secret);
$resp = $recaptcha->verify($gRecaptchaResponse, $remoteIp);
if ($resp->isSuccess()) {

//DO ACTION IF SUCCESSFUL

if (isset($_POST['name']) && isset($_POST['email']) &&
        isset($_POST['subject']) && isset($_POST['message'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $subject = $_POST['subject'];
    $message = $_POST['message'];
    $outputMessage = $message ."\r\n\r\n" . $name;

    $headers = 'From: ' . $email . "\r\n" .
        'Reply-To: ' . $email . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

    mail("mail@mail.com", $subject, $outputMessage, $headers);

   }



 } else {

//$errors = $resp->getErrorCodes();
echo "It appears you may be a robot. Please try again.";

} 

我意识到单独包含所有这些文件并不是一种很好的做法,但我现在可以解决这个问题。

希望这有助于某人。

Peakapot