我注意到来自我网站联系表单的垃圾邮件大幅增加,我正在研究使用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库文件并将其上传到我的托管服务器。
答案 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>