我非常感谢在我的网站中实施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.
谢谢
答案 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