以下是邮件表单的HTML:
头脑中的:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
身体:
<form action="mail.php" method="POST">
<p>Name</p> <input type="text" name="name">
<p>Email</p> <input type="text" name="email">
<p>Phone Number</p> <input type="text" name="number"<br/><br/>
<div class="g-recaptcha" data-sitekey="my site key"></div><br/>
<input type="submit" value="Send"><input type="reset" value="Clear">
</form>
以下是整个mail.php文件:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$number = $_POST['number'];
$formcontent="From: $name \n Phone Number: $number";
$recipient = "me@gmail.com";
$subject = "Contact Form";
$mailheader = 'MIME-Version: 1.0' . "\r\n";
$mailheader .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$mailheader .= 'To: $recipient';
$mailheader .= 'From: $email \r\n';
if (empty($_POST["email"])) {
die("Please fill in all forms.");
} else {
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die('Invalid email.');
} else {
if (strlen($number) == 10) {
require_once('recaptchalib.php');
$privatekey = "priv key";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
die("Thank You!");
}
} else {
die ("Please enter a 10 digit phone number with no hyphens.");
}
}
}
?>
到目前为止,当上传到我的文件服务器时,它总是会抛出一个“谢谢”,除非所有字段都没有填写。正如您所看到的,我正在尝试使用google的recaptcha来防止机器人邮寄垃圾邮件以及对我自己进行检查以确保表单填写正确。问题是我没有收到任何电子邮件。非常感谢任何帮助。