Таким образом, в основном у меня есть форма, которая представляет информацию на мой сайт, где я могу позже одобрить информацию, чтобы перейти на мой сайт или удалить ее.
Я недавно добавил на сайт средство проверки ботов recaptcha, чтобы я мог избежать спамеров и тому подобное, но проблема в том, что у меня процессы и макет страницы отправки в одном файле (submitinfo.php)
Процесс recaptcha автоматически убивает страницу, потому что капча неверна (потому что у них не было возможности набрать ее), поэтому я подумал, что вместо того, чтобы убить страницу, я просто заставлю ее выдать сообщение о том, что капча неверно, но, как указано выше, когда пользователь впервые открывает страницу, у него не было возможности ввести капчу, поэтому сообщение будет отображаться, даже если он еще ничего не ввел.
Я подумал, если я добавлю счетчик, который показывает сообщение, только если счетчик больше 0 и добавляет +1 каждый раз, когда они загружают страницу. Я сделал это, но сообщение не появляется, даже после того, как несколько раз неправильно введена капча, я думаю, что это потому, что счетчик сбрасывается каждый раз, когда я нажимаю кнопку отправки. Вот код, чтобы вы, ребята, могли видеть, что я на самом деле сделал:
$count
settype($count,"integer");
require_once('recaptchalib.php');
$privatekey = "My Private Captcha Key goes here";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
// the stuff above is just the code from the captcha
if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
if($count>0){ $errormessage = "block"; //this displays the error message if the counter is greater then 0
}
$count++;
} else{
//here it submits the info
Просто проверьте, что у вас есть $_POST
данные, прежде чем проверять капчу. Это должно быть что-то вроде этого:
<?php
if ($_POST) {
// check captcha
if ($captcha_valid) {
// persist submitted form data
// redirect on success
} else {
$error = 'captcha';
}
}
?>
<!-- display form -->
Других решений пока нет …