将Google NoCaptcha ReCaptcha实施为现有表单

时间:2015-01-15 16:23:43

标签: php

我正在尝试将Googles nocaptcha应用到我的联系表单中。我可以把小部件放在我的代码中。但我不知道如何设置PHP方面(我对PHP没有任何线索)。

我想知道是否有人可以帮助我理解放在哪里...我已经尝试了一些教程,但是再次 - 我几乎不理解我的PHP表单的语法。

截至目前,我在表单中有小部件。有人帮我添加PHP验证吗?

感谢。

代码:

<?php 
$errors = '';
$myemail = 'myemail';//<-----Put Your email address here.
if(empty($_POST['first-name'])  || 
   empty($_POST['last-name'])  ||   
   empty($_POST['email']) ||
   empty($_POST['phone']) ||
   empty($_POST['location']) ||
   empty($_POST['kw']) ||
   empty($_POST['pv-type']) ||
   empty($_POST['message'])) 

{
    $errors .= "\n Error: all fields are required";
}

$first_name = $_POST['first-name']; 
$last_name = $_POST['last-name']; 
$email_address = $_POST['email'];
$phone = $_POST['phone'];
$location = $_POST['location'];
$kw = $_POST['kw'];
$pv_type = $_POST['pv-type'];
$message = $_POST['message'];


if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
$email_address))
{
    $errors .= "\n Error: Invalid email address";
}

if( empty($errors))
{
    $to = $myemail; 
    $email_subject = "Inquiry from: $first_name $last_name";
    $email_body = "You have received a new inquiry from:".
    "\n Name: $first_name $last_name \n Email: $email_address \n Phone Number: $phone  
     \n I have a project in: $location \n The project type is: $pv_type  \n The estimated project size is: $kw
     \n Message: $message"; 

    $headers = "From: $myemail\n"; 
    $headers .= "Reply-To: $email_address";

    mail($to,$email_subject,$email_body,$headers);
    //redirect to the 'thank you' page
    header('Location: thankyou.html');
} 
?>

1 个答案:

答案 0 :(得分:0)

丹尼尔,它的工作方式是你必须在HTML中添加一个div标签,其中包含GOogle用来生成noCaptcha测试的特定类。但是,通过查看那里的PHP代码,您可能希望做一些其他事情来保护您的表单不被滥用。

您需要从Google获取两个API密钥,您的代码将用于与Google进行通信。 On用于HTML表单,另一个用于PHP代码中的服务器上。

以下是其工作原理的基本流程: 1)您的表单上有一个字段,其中包含您的一个Google密钥(网站密钥),Google会在加载时将测试添加到您的网页中。 2)当用户点击该复选框时,Google会获取网站密钥以确保它是您的网站 3)用户完成测试 4)Google在表单中添加了另一个元素,其中包含响应令牌 5)当您的用户将表单提交到您的网站时,您的PHP代码会抓取响应令牌并将其发送给Google进行验证。 6)Google然后以JSON格式向您的服务器发回另一个响应,让您知道响应令牌是否已经过验证。如果是的话,你继续下一步,如果没有,你会向用户显示错误,因为有些事情是不对的。

这是对过程的粗略概述,但我希望它为您澄清一些事情。