我在一个联系网站上工作,我想在那里有联系表格。我希望它将数据发送到电子邮件,并且我希望它由 Google 的 recaptcha v3 进行检查。
这是我第二次尝试。过去,我在没有 recaptcha 的情况下成功完成了它。现在,我使用了这个(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”
表单.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'];
问题不在 recaptcha 部分,但后来我收到电子邮件,其中数据丢失。(它只显示变量名,不显示实际值)。我可能认为这是因为在脚本中命名,因为我不确定在变量声明中写什么。我很高兴收到有关此问题的任何意见。
相关分类