我遇到了这个问题,我正在使用reCAPTCHA来防范垃圾邮件机器人。问题是,当用户输入错误的字符或将验证码留空时,它会回显错误信息。 它还会刷新页面,并且用户输入的所有信息都将丢失。 我的问题是,如何在没有页面刷新的情况下显示reCAPTCHA错误消息?例如如果输入了错误的验证码,则显示警告框或更好的隐藏错误div。
HTML
<form action="" method="post" enctype="multipart/form-data">
<div id="sc_header" style="margin-top: 11px;">Human check</div>
<p><?php
require_once('recaptchalib.php');
$publickey = "my_public_key_here";
echo recaptcha_get_html($publickey);
?></p>
<p style="float: left;"><input type="submit" value="Send"></p>
<input name="story-create" type="hidden" value="submit">
</form>
PHP
<?php
if ($_POST['story-create'] == "submit"){
require_once('inc/recaptchalib.php');
$privatekey = "my_private_key_here";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
}
}
?>
答案 0 :(得分:1)
保留用户输入的一种简单方法是将表单提交给生成表单的同一脚本。这种方法的概要可以是:
<强> signup.php 强>
<?php
// if data submitted, perform validation (if sign up is successful, redirect to success page)
?>
<form action="signup.php" method="post">
<input type="text" name="username" value="<?php if (!empty($_POST['username'])) echo strip_tags($_POST['username']) ?>" />
<!-- etc... -->
</form>
这个答案假设你想要“没有页面刷新”,因为你认为它会避免清除表单,而不是想要一个AJAXian解决方案。