我正在尝试将Google的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');
}
?>
Daniel,它的工作方式是你必须在你的HTML中放置一个div标签,带有GOogle用来生成noCaptcha测试的特定类。但是,通过在那里查看您的 PHP 代码,您可能希望做一些其他事情来保护您的表单不被滥用。
您需要从 Google 获取两个 API 密钥,您的代码将使用这些密钥与 Google 进行通信。On 用于 HTML 表单,另一个用于服务器上的 PHP 代码。
以下是其工作原理的基本流程:1) 您的表单上有一个字段,其中包含您的一个 Google 密钥(网站密钥),Google 会在加载时将测试添加到您的页面中。2)当用户点击该复选框时,Google会获取网站密钥,以确保它是您的网站3) 用户完成测试4)谷歌在你的表单中添加了另一个元素,其中包含一个响应令牌5) 当您的用户将表单提交到您的网站时,您的 PHP 代码会获取响应令牌并将其发送给 Google 进行验证。6) 然后,Google 会以 JSON 格式向您的服务器发送另一个响应,让您知道响应令牌是否已通过验证。如果是,则继续下一步,如果不是,则向用户显示错误,因为某些内容不正确。
这是对该过程的粗略概述,但我希望它能为您澄清事情。