0

长期潜伏在这里,这是我第一次发帖并向您的伟大思想寻求帮助。如标题所示,我需要一些帮助才能将 hCaptcha 与我的 HTML/PHP 联系表成功集成。我正在为客户开发一个网站,并在网站的每个页面上都有一个联系表格,当点击“电子邮件”图标时会弹出一个联系表格。姓名、电话号码和消息的文本字段都是必需的,除非填写它们,否则表单不会发送,如果按下“发送”按钮时留空,则会弹出一条消息告诉用户填写它们,但是我无法实现验证码。

目前,如果用户填写了所有必填字段并成功完成了验证码,则表单的操作 mail.php 就完成了,它会发送一封电子邮件并将用户重定向到一个特殊的谢谢登录页面。但是,如果表单的字段填写成功,但验证码未完成,点击“发送”按钮会将用户重定向到加载白屏的 WEBSITE/mail.php。该表格不是作为电子邮件发送的,我想这仍然可以防止垃圾邮件。我做到了,所以 mail.php 上会弹出一条错误消息,告诉用户点击后退按钮并完成验证码以发送他们的消息。然后,如果他们点击浏览器上的后退按钮,它会将他们带到上一页,如果他们按下电子邮件图标以弹出联系表,他们的消息仍然存在,谢天谢地。

这是代码,在此先感谢您的所有帮助:

联系表:

<form action="mail.php" method="POST" class="form-container">
<font id="popup-contact-header"><b>Please use this form to send us an email or call or text <a href="tel:555PHONE#">(555) PHONE#</a> and we'll get back with you <abbr title="As Soon As Possible" style="text-decoration:none;">ASAP</abbr>!</b></font><br><br>
<b>Name:<font color="#FF0000">*</font></b><br>
<input type="text" name="name" style="font-size:12pt;max-width:250px;height:25px;border:1px solid black;padding:3px;text-align:center;" required><br>
<b>Email Address:</b><br>
<input type="text" name="email" style="font-size:12pt;max-width:250px;height:25px;border:1px solid black;padding:3px;text-align:center;"><br>
<b>Phone Number:<font color="#FF0000">*</font></b><br>
<input type="text" name="phone" style="font-size:12pt;max-width:250px;height:25px;border:1px solid black;padding:3px;text-align:center;" required><br>
<b>Request Phone Call:</b><br>
Yes:<input type="checkbox" value="Yes" name="call">
No:<input type="checkbox" value="No" name="call"><br>
<b>Message:<font color="#FF0000">*</font></b><br>
<textarea name="message" rows="6" cols="24" style="font-size:12pt;border:1px solid black;padding:3px;" required></textarea>
<div class="h-captcha" data-sitekey="MY_PERSONAL_SITEKEY" id="Contact-Captcha"></div>
<button type="submit" class="btn" value="send">Submit</button>
<button type="button" class="btn cancel" onclick="closeForm()">Close</button><br>
<font id="popup-contact-required"><b><font style="color:#FF0000;">*</font>Required Field</b></font>
</form>

邮件.php

<?php
$data = array(
            'secret' => "MY_SECRET_KEY_HERE",
            'response' => $_POST['h-captcha-response']
        );
$verify = curl_init();
curl_setopt($verify, CURLOPT_URL, "https://hcaptcha.com/siteverify");
curl_setopt($verify, CURLOPT_POST, true);
curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($verify, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($verify);
// var_dump($response);
$responseData = json_decode($response);
if($responseData->success) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $call = $_POST['call'];

$message = $_POST['message'];
$formcontent=" From: $name \n Phone: $phone \n Call Back: $call \n Message: $message";
$recipient = "boss@website.com";
$subject = "Website Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header("Location: http://www.website.com/thanks");
} 
else {
$message = "Please hit the Back button to complete the Captcha and submit your message";
echo "<script type='text/javascript'>alert('$message');</script>";
}
?>
4

0 回答 0