在 PHP 服务器端提交表单后重置 reCaptcha
Reset reCaptcha after form submission in PHP server side
我的这个脚本运行良好。我想在提交后重置 google 的验证码。我知道这会很简单,但我无法让 JS 函数在我的脚本中工作。
<?php
session_cache_limiter( 'nocache' );
header( 'Expires: ' . gmdate( 'r', 0 ) );
header( 'Content-type: application/json' );
$to = 'hi@shanemuirhead.co.uk'; // put your email here
$email_template = 'simple.html';
$subject = strip_tags($_POST['vsubject']);
$email = strip_tags($_POST['vemail']);
$name = strip_tags($_POST['vname']);
$message = nl2br( htmlspecialchars($_POST['vmessage'], ENT_QUOTES) );
$result = array();
if(empty($email)){
$result = array( 'response' => 'error', 'empty'=>'email', 'message'=>'<strong>Error!</strong> Email is empty.' );
echo json_encode($result );
die;
}
if(empty($name)){
$result = array( 'response' => 'error', 'empty'=>'name', 'message'=>'<strong>Error!</strong> Name is empty.' );
echo json_encode($result );
die;
}
if(empty($message)){
$result = array( 'response' => 'error', 'empty'=>'message', 'message'=>'<strong>Error!</strong> Message body is empty.' );
echo json_encode($result );
die;
}
if(empty($_POST['g-recaptcha-response'])) {
$result = array( 'response' => 'error', 'empty'=>'message', 'message'=>'<strong>Error!</strong> Please complete the Captcha.' );
echo json_encode($result );
die;
}
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) {
$secret = '$SECRET_HERE$';
$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 == true) {
$headers = "From: " . $name . ' <' . $email . '>' . "\r\n";
$headers .= "Reply-To: ". $email . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
$templateTags = array(
'{{subject}}' => $subject,
'{{email}}'=>$email,
'{{message}}'=>$message,
'{{name}}'=>$name
);
$templateContents = file_get_contents( dirname(__FILE__) . '/inc/'.$email_template);
$contents = strtr($templateContents, $templateTags);
if ( mail( $to, $subject, $contents, $headers ) ) {
$result = array( 'response' => 'success', 'message'=>'<strong>Thank You!</strong> Your email has been delivered.' );
} else {
$result = array( 'response' => 'error', 'message'=>'<strong>Error!</strong> Can\'t Send Mail.' );
}
echo json_encode( $result );
die;
}
else
{
echo "<p> Sorry verification valid</p>";
}
}
?>
我想在 echo "thank you message sent" 之后让脚本重置 recaptcha。
用这个函数就可以做到
grecaptcha.reset();
只需要知道如何将它正确地放置在我的脚本中。
我见过这样的例子:
echo '<script type="text/javascript">',
'grecaptcha.reset();',
'</script>'
;
但无法在我的脚本中运行。
非常感谢任何帮助或指导。
在 AJAX 成功函数中我添加了这段代码来解决我的问题:
grecaptcha.reset(); //Resets reCaptcha
我的这个脚本运行良好。我想在提交后重置 google 的验证码。我知道这会很简单,但我无法让 JS 函数在我的脚本中工作。
<?php
session_cache_limiter( 'nocache' );
header( 'Expires: ' . gmdate( 'r', 0 ) );
header( 'Content-type: application/json' );
$to = 'hi@shanemuirhead.co.uk'; // put your email here
$email_template = 'simple.html';
$subject = strip_tags($_POST['vsubject']);
$email = strip_tags($_POST['vemail']);
$name = strip_tags($_POST['vname']);
$message = nl2br( htmlspecialchars($_POST['vmessage'], ENT_QUOTES) );
$result = array();
if(empty($email)){
$result = array( 'response' => 'error', 'empty'=>'email', 'message'=>'<strong>Error!</strong> Email is empty.' );
echo json_encode($result );
die;
}
if(empty($name)){
$result = array( 'response' => 'error', 'empty'=>'name', 'message'=>'<strong>Error!</strong> Name is empty.' );
echo json_encode($result );
die;
}
if(empty($message)){
$result = array( 'response' => 'error', 'empty'=>'message', 'message'=>'<strong>Error!</strong> Message body is empty.' );
echo json_encode($result );
die;
}
if(empty($_POST['g-recaptcha-response'])) {
$result = array( 'response' => 'error', 'empty'=>'message', 'message'=>'<strong>Error!</strong> Please complete the Captcha.' );
echo json_encode($result );
die;
}
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) {
$secret = '$SECRET_HERE$';
$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 == true) {
$headers = "From: " . $name . ' <' . $email . '>' . "\r\n";
$headers .= "Reply-To: ". $email . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
$templateTags = array(
'{{subject}}' => $subject,
'{{email}}'=>$email,
'{{message}}'=>$message,
'{{name}}'=>$name
);
$templateContents = file_get_contents( dirname(__FILE__) . '/inc/'.$email_template);
$contents = strtr($templateContents, $templateTags);
if ( mail( $to, $subject, $contents, $headers ) ) {
$result = array( 'response' => 'success', 'message'=>'<strong>Thank You!</strong> Your email has been delivered.' );
} else {
$result = array( 'response' => 'error', 'message'=>'<strong>Error!</strong> Can\'t Send Mail.' );
}
echo json_encode( $result );
die;
}
else
{
echo "<p> Sorry verification valid</p>";
}
}
?>
我想在 echo "thank you message sent" 之后让脚本重置 recaptcha。
用这个函数就可以做到
grecaptcha.reset();
只需要知道如何将它正确地放置在我的脚本中。
我见过这样的例子:
echo '<script type="text/javascript">',
'grecaptcha.reset();',
'</script>'
;
但无法在我的脚本中运行。
非常感谢任何帮助或指导。
在 AJAX 成功函数中我添加了这段代码来解决我的问题:
grecaptcha.reset(); //Resets reCaptcha