OK Я пытаюсь реализовать ReCaptcha в простой форме, которая отправляется в БД. У этой формы есть несколько разных валидаций для проверки адреса, действительного в отношении API LiveAddress и его вычитания и т. Д.PHP ReCaptcha if else
Итак, я пытаюсь добавить ReCaptcha в elseif, как показано ниже, обе моей работы по проверке, но как только она попадет в ReCaptcha Я ввожу правильную или неправильную капчу, когда я нахожу ее, она просто переходит на пустую страницу. Без ошибок.
У меня есть правильные общедоступные и закрытые ключи на моей форме и включены для recaptchalib.php. Я могу опубликовать этот код, если вы считаете, что это будет полезно.
Я предполагаю, что мне нужно, чтобы это было, если еще не указано ниже, потому что, если у меня есть всего код для конвертации в форме, как в примере, который вы загружаете, он игнорирует капчу все вместе, он просто отправляется в БД успешно, даже если вы не поместите ничего в ввод captcha.
if(empty($errorMessage))
{
// Dedupe the entry into the form
$dupesql = "SELECT * FROM fromData WHERE (address = '$primary_number' AND city = '$city_name' AND state = '$state_abbreviation' AND zip = '$zipcode_full')";
$duperaw = $mysqli->query($dupesql);
// Check to make sure that they entered a valid address according to Liveaddress API
if(empty($primary_number)){
$bad_address .= "$bad_add in $bad_city, $bad_state is not a valid address please try again\n";
}
// Check to make sure that they have not already registered deduping on address, city, state, zip
elseif($duperaw->num_rows > 0) {
$dupe .= "$full_name already exists on $bad_add in $bad_city, $bad_state \n";
}
elseif(isset($_POST["recaptcha_response_field"]))
{
$resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);
if(!$resp->is_valid) {
echo "reCaptcha incorrect";
} else {
echo "reCaptcha OK";
}
}
// If all "elseif" fail then we insert them into our database
else {
$sql = "INSERT INTO fromData (name, email, address, city, state, zip, date, optin, proccessed) VALUES ('$full_name', '$email', '$primary_number', '$city_name', '$state_abbreviation', '$zipcode_full', '$date', '$optin', 'No')";
$mysqli->query($sql);
echo $mysqli->error;
header("location: index.php?success=1");
exit();
}
}
Может ли кто-нибудь увидеть что-либо, что явно не соответствует моему коду выше? Я перемещаю код capcha, и он все еще не работает. Я предполагаю, что это шкаф, я должен заставить его работать так, как мне нужно.
Спасибо за ответ @daew! Я действительно пробовал это, прежде чем я разместил здесь. Имея почтовый код в другом блоке captcha. Я только что попробовал снова с вашим фрагментом кода, и я получаю то же самое, когда я нажимаю submit с помощью или без него, он просто переходит на пустую страницу. – Travis
Можете ли вы разместить свой HTML-код? Если вы всегда получаете пустую страницу, независимо от того, возможно ли, что ваша ссылка в форме ('action =" ... "') неверна? Тест, перейдя по этой ссылке напрямую ... Классическим способом сделать это будет функция 'onsubmit =" ... "', которая проверяет все и возвращает '1', если форма действительна (включая капчу). – Daew
Да, я думаю, что понял свою проблему. У меня была часть кода captcha на form.php include, а другая часть для обработки на index.php Как только я переместил форму обратно в index.php, она работает так, как ожидалось. Поэтому я собираюсь решить эту проблему и работать с другой частью, где она отображает форму или сообщение об ошибке, основанное на количестве представлений. Я думаю, что будет намного легче разобраться, а затем перекодировать код captcha в 2 разных файла. Я ценю вашу помощь в этом приветствии! – Travis