Здравствуйте, формучане! Всех с наступающей весной!
Нужна помощь очень-очень!
Не получается интегрировать reCapcha от гугла в свою форму обратной связи.
reCapcha скопировала по рецепту с этого сайта:https://phpjs.ru/2017/07/18/google-captcha-v2/
Там в самом начале сказано, что, цитирую: "в конце статьи есть способ проверки капчи всего лишь 3мя строчками кода."
Ну, так я и сделала. Скопировала разметку,
затем эти самые 3 строчки в файл post.php.
Капча работает.
Затем скопировала уже свою, готовую форму обратной связи:
1. в index.html, поместив блок с капчей перед кнопкой отправки.
2. в post.php, сразу после кода проверки капчи:
Форма, естественно, всё отправляет, игнорируя капчу.
Теперь думаю, голову ломаю, как блок с капчей заставить работать по сценарию формы обратной связи, чтобы при нажатии на кнопку без галочки "я не робот", письмо не отправлялось и высвечивалась ошибка и наоборот, отправлялось после проверки капчи.
Подозреваю, что нужно что-то вроде этой строчки:
(это из кода, любезно предоставленного по ссылке, которую я оставляла в самом начале поста)
вставить где-то между этих двух строк обработки формы обратной связи:
и/или как-то упомянуть в самом начале обработки в этой строке:
На всякий случай, скрипт JS:
Но, а как это сделать и что нужно делать вообще, не представляю, так как в бэкэнде полный нуб и форму делала по видеоуроку.
Помогите, пожалуйста, советом.
Нужна помощь очень-очень!
Не получается интегрировать reCapcha от гугла в свою форму обратной связи.
reCapcha скопировала по рецепту с этого сайта:https://phpjs.ru/2017/07/18/google-captcha-v2/
Там в самом начале сказано, что, цитирую: "в конце статьи есть способ проверки капчи всего лишь 3мя строчками кода."
Ну, так я и сделала. Скопировала разметку,
Код:
<!--капча от гугла-->
<form action="" method="post">
<div class="g-recaptcha" data-sitekey="_______-________"></div>
<script type="text/javascript"
src="https://www.google.com/recaptcha/api.js?hl=<?php echo $lang; ?>">
</script>
Код:
<?php
$recaptcha_secret = '_____-__';
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']);
$result = json_decode($response, true);
Затем скопировала уже свою, готовую форму обратной связи:
1. в index.html, поместив блок с капчей перед кнопкой отправки.
Код:
<body>
<form action="" id="form">
<div><input name="email" placeholder="Email" data-validation="email" data-validation-error-msg="Введите верный Email!"></div>
<div><input name="alias" placeholder="Имя" data-validation="length" data-validation-length="min2" data-validation-error-msg="Слишком короткое имя! Нужно от 2-х символов!"></div>
<div><input name="phone" placeholder="Телефон" type="number" data-validation="number" data-validation-error-msg="Допустимы только цифры!"></div>
<div><textarea name="message" placeholder="Сообщение" data-validation="length" data-validation-length="min10" data-validation-error-msg="Сообщение должно быть длинее 10 символов!"></textarea></div>
<!--капча от гугла-->
<form action="" method="post">
<div class="g-recaptcha" data-sitekey="_______-______"></div>
<script type="text/javascript"
src="https://www.google.com/recaptcha/api.js?hl=<?php echo $lang; ?>">
</script>
<br/>
<!--<input type="button" value="submit" />-->
</form>
<input type="button" value="Отправить сообщение">
</form>
<div class='result'></div>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js'></script>
<script>window.JQuery || document.write('<script src="js/jquery-3.1.1.min.js"><\/script>');</script>
<script src='js/jquery.form-validator.min.js'></script>
<script src='js/script.js'></script>
</body>
</html>
Код:
<?php
$recaptcha_secret = '__-___';
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']);
$result = json_decode($response, true);
//форма обратной связи
if (!empty($_POST['alias']) AND !empty($_POST['email']) AND !empty($_POST['message']) AND empty($_POST['name'])){
$headers = "From: ФИО \r\n".
$headers .= 'Reply-To: ***@gmail.com'. // $headers .=
$headers .= 'X-Mailer: PHP/'. phpversion();
$theme = 'Новое сообщение';
$letter = "Данные сообщения:\r\n";
$letter .='Имя: '.$_POST['alias']."\r\n";
$letter .='Email: '.$_POST['email']."\r\n";
$letter .='Телефон: '.$_POST['phone']."\r\n";
$letter .='Сообщение: '.$_POST['message']."\r\n";
$letter = $_POST['name'];
if (mail('***@gmail.com', $theme, $letter, $headers)){
echo "Сообщение отправлено!";
} else {
echo "Ошибка при отправке!";
}
} else {
echo "Ошибка: Заполните все поля!";
}
?>
Теперь думаю, голову ломаю, как блок с капчей заставить работать по сценарию формы обратной связи, чтобы при нажатии на кнопку без галочки "я не робот", письмо не отправлялось и высвечивалась ошибка и наоборот, отправлялось после проверки капчи.
Подозреваю, что нужно что-то вроде этой строчки:
Код:
if ($resp->isSuccess()):
вставить где-то между этих двух строк обработки формы обратной связи:
Код:
if (mail('***@gmail.com', $theme, $letter, $headers)){
echo "Сообщение отправлено!";
Код:
if (!empty($_POST['alias']) AND !empty($_POST['email']) AND !empty($_POST['message']) AND empty($_POST['name'])){
Код:$.validate({ borderColorOnError : 'red' }); $('[type="button"]').click(function() { errors = []; if( !$('#form').isValid() ) { //displayErrors( errors ); } else { $.post( "post.php", //url { //данные из форм email: $('[name="email"]').val(), alias: $('[name="alias"]').val(), phone: $('[name="phone"]').val(), message: $('[name="message"]').val(), name: $('[name="name"]').val() }, function( data ) { $( ".result" ).html(data); } ); } });
Но, а как это сделать и что нужно делать вообще, не представляю, так как в бэкэнде полный нуб и форму делала по видеоуроку.
Помогите, пожалуйста, советом.