我按照在线教程展示了如何在HTML中将reCAPTCHA添加到表单中,同时还在PHP中使用if / then脚本,如果验证码失败则显示消息。我的一切工作都在大部分时间,但我试图弄清楚如何通过Formspree的重定向提交联系表单。当用户验证验证码并单击提交按钮时,它们将被重定向到测试页面,但我无法弄清楚如何发送表单数据。我想象它必须在PHP中完成,使用变量引用表单的字段,但我自己在PHP上并不太好。
这是我的HTML表单:
<div id="form">
<form method="post" action="http://formspree.io/MY@EMAIL.COM">
<?php if(isset($_GET['CaptchaFail'])){ ?>
<div class="row 50%">
Captcha failed. Please try again.
</div>
<?php } ?>
<div class="row 50%">
<div class="6u 12u(mobile)"><input type="text" name="name" placeholder="Name" /></div>
<div class="6u 12u(mobile)"><input type="email" name="email" placeholder="Email" /></div>
</div>
<div class="row 50%">
<div class="12u"><textarea name="message" placeholder="Message" rows="6"></textarea></div>
</div>
<div class="row">
<div class="12u">
<ul class="actions">
<div class="g-recaptcha" data-sitekey="--- my Google reCAPTCHA sitekey ---"></div>
<li">
<input name="ContactButton" type="submit" value="Send Message" id="ContactButton"></li>
</ul>
</div>
</div>
</form>
</div>
这就是PHP:
<?php
if(isset($_POST['ContactButton'])){
$url = 'https://www.google.com/recaptcha/api/siteverify';
$privatekey = "--- my Google reCAPTCHA secret key ---";
$response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);
$data = json_decode($response);
if(isset($data->success) AND $data->success==true){
header('Location: submit.html');
}else{
header('Location: index.php?CaptchaFail=True#form');
}
}
?>
我知道该操作需要与重定向到&#39; submit.html&#39;相同的部分。发生了,但我不知道在那里添加什么会提交表格。我必须删除表单操作才能重定向到&#39; submit.html&#39;发挥作用。否则,无论是否检查验证码,提交按钮都会通过Formspree提交表单。
感谢您的帮助!