谷歌的reCaptcha减少垃圾邮件

时间:2016-01-16 18:30:11

标签: php contact-form spam recaptcha

我注意到来自我网站联系表单的垃圾邮件大幅增加,我正在研究使用Google的reCaptcha方法来减少和/或消除此垃圾邮件。

我的网站已经有一个联系表单以及该表单的.php文件。以下是联系表单的html代码片段:

<form class='mailform' method="post" action="bat/rd-mailform.php">
            <input type="hidden" name="form-type" value="contact"/>
             <fieldset>
              <label data-add-placeholder="">
               <input type="text"
                name="name"
                placeholder="Name"
                data-constraints="@LettersOnly @NotEmpty"/>
             </label>.............

我已在Google reCaptcha中注册以获取网站密钥和密钥,并在<div>部分添加了<form></form>。以下是代码片段:

<div class="g-recaptcha" data-sitekey="MyKey"></div>

我还在我的Head部分添加了以下内容:

<script src='https://www.google.com/recaptcha/api.js'></script>

由于该网站已有此联系表单的.php文件,如何修改该文件以使reCaptcha正常工作?

以下是已为该网站运行的rd-mailform.php文件的片段:

<?php


$recipients = 'email@gmail.com, email@verizon.net';

try {
require './phpmailer/PHPMailerAutoload.php';

preg_match_all("/([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)/", $recipients, $addresses, PREG_OFFSET_CAPTURE);

if (!count($addresses[0])) {
    die('MF001');
}

if (preg_match('/^(127\.|192\.168\.)/', $_SERVER['REMOTE_ADDR'])) {
    die('MF002');
}

$template = file_get_contents('rd-mailform.tpl');

if (isset($_POST['form-type'])) {

....................

我只需要修改上面的.php文件吗?从我的在线搜索看起来,我可能还需要包含recaptchalib.php库文件并将其上传到我的托管服务器。

1 个答案:

答案 0 :(得分:1)

当您处理表单提交时,不需要任何图书馆只需重新发送信息。

<?php
$secretKey = "Your secret key when you register for recaptcha";

if(!empty($_POST['g-recaptcha-response'])){
    $response = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=". $secretKey. "&response=" . $_POST['g-recaptcha-response']));

    if (!$response->success) {
        // There is a problem implement your logic!
    }
}

已更新: // standard.html

<div id="recaptcha" class="g-recaptcha" data-lang="tr"></div>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
<script>
    grecaptcha.render('recaptcha', {
      'sitekey' : 'yourSiteKey',
      'theme' : 'light'
    });
</script>