php reCaptcha 提交后不会return确认
php reCaptcha will not return confirmation after submission
我的网站上有一个带有 reCaptcha 的联系表 www.boakustikk.no
几乎一切正常。仅当 reCaptcha 正确执行时,电子邮件才会被发送,这是应该的。但在这两种情况下,return 确认只是一个空白的空白页面。似乎 form.php 中第 31 到 41 行的函数不起作用。这是我的 form.php 和 form.html :
form.php:
<?php
if(isset($_POST['submit']) && !empty($_POST['submit'])):
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
//your site secret key
$secret = 'secret';
//get verify response data
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
$responseData = json_decode($verifyResponse);
if($responseData->success):
//contact form submission code
$name = !empty($_POST['name'])?$_POST['name']:'';
$email = !empty($_POST['email'])?$_POST['email']:'';
$message = !empty($_POST['message'])?$_POST['message']:'';
$to = 'kontakt@boakustikk.no';
$subject = 'New contact form have been submitted';
$htmlContent = "
<h1>Henvendelse fra din hjemmeside</h1>
<p><b>Navn: </b>".$name."</p>
<p><b>E-post: </b>".$email."</p>
<p><b>Melding: </b>".$message."</p>
";
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// More headers
$headers .= 'From:'.$name.' <'.$email.'>' . "\r\n";
//send email
@mail($to,$subject,$htmlContent,$headers);
$succMsg = 'Your contact request have submitted successfully.';
else:
$errMsg = 'Robot verification failed, please try again.';
endif;
else:
$errMsg = 'Please click on the reCAPTCHA box.';
endif;
else:
$errMsg = '';
$succMsg = '';
endif;
?>
form.html:
<form action="form.php" method="POST">
<input type="text" name="name" placeholder="Ditt navn" size="43" /><br><br>
<input type="text" name="email" placeholder="Din E-post" size="43" /><br><br>
<textarea type="text" name="message" rows="8" cols="41"></textarea><br><br>
<div class="g-recaptcha" data-sitekey="sitekey"></div><br>
<input type="submit" name="submit" value="SJEKK reCAPTCHA OG SEND MELDING">
</form>
您根据需要向 $succMsg
或 $errMsg
添加文本,但您从不将它们回显到页面。据我所知,您也没有输出任何其他内容。所以执行 form.php 的最终结果将是返回给浏览器的空白页面。
您需要输出消息,最简单的实现是:
echo $succMsg;
或
echo $errMsg;
在错误的情况下。
当然,您可能希望添加一些 HTML 标记和 CSS 以根据您的要求很好地格式化它。
我的网站上有一个带有 reCaptcha 的联系表 www.boakustikk.no 几乎一切正常。仅当 reCaptcha 正确执行时,电子邮件才会被发送,这是应该的。但在这两种情况下,return 确认只是一个空白的空白页面。似乎 form.php 中第 31 到 41 行的函数不起作用。这是我的 form.php 和 form.html :
form.php:
<?php
if(isset($_POST['submit']) && !empty($_POST['submit'])):
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
//your site secret key
$secret = 'secret';
//get verify response data
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
$responseData = json_decode($verifyResponse);
if($responseData->success):
//contact form submission code
$name = !empty($_POST['name'])?$_POST['name']:'';
$email = !empty($_POST['email'])?$_POST['email']:'';
$message = !empty($_POST['message'])?$_POST['message']:'';
$to = 'kontakt@boakustikk.no';
$subject = 'New contact form have been submitted';
$htmlContent = "
<h1>Henvendelse fra din hjemmeside</h1>
<p><b>Navn: </b>".$name."</p>
<p><b>E-post: </b>".$email."</p>
<p><b>Melding: </b>".$message."</p>
";
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// More headers
$headers .= 'From:'.$name.' <'.$email.'>' . "\r\n";
//send email
@mail($to,$subject,$htmlContent,$headers);
$succMsg = 'Your contact request have submitted successfully.';
else:
$errMsg = 'Robot verification failed, please try again.';
endif;
else:
$errMsg = 'Please click on the reCAPTCHA box.';
endif;
else:
$errMsg = '';
$succMsg = '';
endif;
?>
form.html:
<form action="form.php" method="POST">
<input type="text" name="name" placeholder="Ditt navn" size="43" /><br><br>
<input type="text" name="email" placeholder="Din E-post" size="43" /><br><br>
<textarea type="text" name="message" rows="8" cols="41"></textarea><br><br>
<div class="g-recaptcha" data-sitekey="sitekey"></div><br>
<input type="submit" name="submit" value="SJEKK reCAPTCHA OG SEND MELDING">
</form>
您根据需要向 $succMsg
或 $errMsg
添加文本,但您从不将它们回显到页面。据我所知,您也没有输出任何其他内容。所以执行 form.php 的最终结果将是返回给浏览器的空白页面。
您需要输出消息,最简单的实现是:
echo $succMsg;
或
echo $errMsg;
在错误的情况下。
当然,您可能希望添加一些 HTML 标记和 CSS 以根据您的要求很好地格式化它。