Я работаю на сайте контактов, где я хочу иметь контактную форму.Я хочу, чтобы он отправлял данные на электронную почту, и я хочу, чтобы это проверялось в recaptcha v3 от Google.
Это моя вторая попытка.В прошлом я делал это успешно, не повторяя.Теперь я использовал этот (https://codeforgeek.com/google-recaptcha-v3-tutorial/) учебник, со следующим результатом:
скрипт под формой
// when form is submit
$('#myform').submit(function() {
// we stoped it
event.preventDefault();
var mail = $('#email').val();
var comment = $("#sprava").val();
// needs for recaptacha ready
grecaptcha.ready(function() {
// do request for recaptcha token
// response is promise with passed token
grecaptcha.execute('__SITE-KEY__', {action: 'create_comment'}).then(function(token) {
// add token to form
$('#myform').prepend('<input type="hidden" name="g-recaptcha-response" value="' + token + '">');
$.post("form.php",{mail: mail, comment: comment, token: token}, function(result) {
if(result.success) {
alert('Thanks for message')
} else {
alert('An error occured')
}
});
});;
});
});
</script>
имена полей формы html "email", "vyber""," sprava "
form.php
<?php
$mail;$comment;$captcha;
$mail = filter_input(INPUT_POST, 'mail', FILTER_VALIDATE_EMAIL);
$comment = filter_input(INPUT_POST, 'comment', FILTER_SANITIZE_STRING);
$captcha = filter_input(INPUT_POST, 'token', FILTER_SANITIZE_STRING);
}
function email_sending(){
$webmaster_email = "bla@bla.com";
$sender_email= "blabla@bla.com" ;
$email_address = $_REQUEST['email'] ;
$selection = $_REQUEST['vyber'] ;
$message = $_REQUEST['sprava'];
$msg =
"E-mail: " . $email_address . "\r\n" .
"I'm interested in " . $selection . "\r\n" .
"Message: " . $message ;
mail( "$webmaster_email", "You have mail", $msg, $header);
}
if($responseKeys["success"]) {
echo json_encode(array('success' => 'true'));
email_sending();
} else {
echo json_encode(array('success' => 'false'));
}
?>
Проблема не в части recaptcha, но затем я получаю электронную почту, где данные отсутствуют. (показывает только переменнуюимена, а не фактические значения.) Я мог бы подумать, что это из-за именования в скрипте, так как я не уверен, что писать в объявлении переменных. Я был бы рад получить любую информацию об этой проблеме.