PHP:如果验证码正确完成,尝试获取html表单以发送电子邮件
以下是邮件表单的HTML: 在头部:PHP:如果验证码正确完成,尝试获取html表单以发送电子邮件,php,email,recaptcha,Php,Email,Recaptcha,以下是邮件表单的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&
<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>
姓名
电子邮件
电话号码那么这可能是PHP邮件问题,而不是验证码问题。因为邮件根本没有到。您是否检查过邮件日志中的任何错误等?为什么会出现颠倒的逻辑?,如果(!$resp->有效){
将为true,但值为false…继续获取“没有正确输入reCAPTCHA。请返回并重试。(reCAPTCHA说:不正确的captcha sol)”所以我将它切换到测试电子邮件是否会发送。还没有检查日志,现在正在尝试查找它。打印$\u提交表单时,打印($\u POST);检查您的帖子值并与您期望的内容进行比较。检查recaptcha_Check_response函数,以便了解您应该期望的内容。因此,当我打印帖子时,我会从html中的文本字段以及[g-recaptcha-response]中获得响应接着是一大堆随机数字和字母,不知道该怎么做。我想谷歌的文档说返回的是一个JSON对象,只是不知道如何检查该信息的布尔值是真还是假。
<?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.");
}
}
}
?>