我正在尝试将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');
}
?>
答案 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格式向您的服务器发回另一个响应,让您知道响应令牌是否已经过验证。如果是的话,你继续下一步,如果没有,你会向用户显示错误,因为有些事情是不对的。
这是对过程的粗略概述,但我希望它为您澄清一些事情。