логика обработки внутри send.php в корне неверная, но для ознакомления сойдёт) 23:50 эта проверка как раз и нужна, но обработка формы должна быть внутри условия там где >=0.5 сразу-же, а не потом отдельно как-то через JS. и внутри JS тоже не должно быть никаких проверок типа score >= 0.5 -- PHP-скрипт же уже всё проверил и отдал обратно или success = true или false. поэтому в ветке JS нужно просто проверять что вернулось и выводить результат из JSON и всё.
Ещё не пробовал, но вижу что всё гуд!) Правда качество хромает и размер кода очень мал. Есть такой вопрос? Вот в файле send.php 23:52 где проверка люди не люди), получается если люди, то с этого блока сразу можно отправлять данные в базу данных?! Ну это если на php реализовывать.
Супер! Очень просто объяснено, легко установил)) Но вот вопрос - как вот соединить скрипт капчи со скриптом отправки в котором форма еще проходит валидацию, если он в отдельном файле и на jQuery?
Пытаюсь понять схему. 🤔 Скорость воспроизведения уменьшила - 0.75, размер экрана уменьшила до 30%, чтобы как-то видеть код. ))) В остальном - все подробно и понятно. Thank you!
let formData = new FormData(передать элемент формы); let xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { if (xhr.status === 200) { console.log('Отправлено'); // здесь фэнсибокс) } } } xhr.open('POST', 'mail.php', true); xhr.send(formData); как-то так
Сделал сегодня всё как в уроке, и всё работает! Макс, а как сделать чтобы после отправки формы, перекидывало на send.php и там уже была передача данных на сервер?
Погодите-ка, описанная автором проверка по сути направлена на что-то, что нажимает на кнопку Submit. Чаще всего это человек, ну или какой-то совсем уж древний бот. Выходит, что сам контроллер формы капчей не защищен, а значит можно безнаказанно напрямую отправлять POST в контроллер и этот контроллер радостно будет сабмитить эти данные будучи полностью уверенным в том, что JS уже все проверил, а значит все безопасно.
А если это форма лендинга, и после отправки данные формы нужно отправить еще и на другой файл (страница с благодарностью), и там связь с црм. Как реализовать отправку потом данных пользователя туда?
У меня не работает. выдает ошибку Uncaught (in promise) SyntaxError: Unexpected end of JSON input. и указывает на строку в которой написано ".then(response => response.json())". Все скобки перепроверил раз 10.
а можете проверить ту, что на гитхабе лежит с ботом и человеком, ошибка идет, говорит что я бот, ключи верные с кодом все нормально, ошибка была на уровне хттпс, почему-то цеплял его с соседнего сайта большое спасибо за урок и за исходники)
Пробовал всё делать в одном файле mail.php. Но у меня ничего не приходит в массив responseKeys, да и вообще почта не отправляется через mail(). Это наверное связано с header(Content-type)
@@maxgraph А зачем вообще в этом файле нужен header('Content-type: application/json')? Я его убрал. У меня ошибка оказалась в том, что не поддерживалась функция file_get_contents. Заменил на другой код и заработало.
Боты ещё не умеют её обходить? Меня замучали боты версия рекапчи 2. Попробую 3 версию, сегодня спам приходил , типо хрумер может её обходить, хз правда или нет
Максим, огромное спасибо ! сколько лет прошло, а видосы помогают...
Максим, большое спасибо! Очень помогло видео!
Глобальный супер-массив, ну все теперь я тоже хочу быть массивом :D Спасибо за видос !
😀
Очень интересно, но как быть, если на странице используется несколько форм? (В примере только одна форма и используется id token).
битый день ищу ответ на этот вопрос, но пока все в пустую. С одной формой работает отлично, но на другие формы выдает БОТ)
логика обработки внутри send.php в корне неверная, но для ознакомления сойдёт)
23:50 эта проверка как раз и нужна, но обработка формы должна быть внутри условия там где >=0.5 сразу-же, а не потом отдельно как-то через JS.
и внутри JS тоже не должно быть никаких проверок типа score >= 0.5 -- PHP-скрипт же уже всё проверил и отдал обратно или success = true или false.
поэтому в ветке JS нужно просто проверять что вернулось и выводить результат из JSON и всё.
благодарю Вас за рассказ! здоровья Вам желаю
Спасибо)
Ещё не пробовал, но вижу что всё гуд!) Правда качество хромает и размер кода очень мал. Есть такой вопрос? Вот в файле send.php 23:52 где проверка люди не люди), получается если люди, то с этого блока сразу можно отправлять данные в базу данных?! Ну это если на php реализовывать.
Привет) спасибо за видос, но у меня почему-то в om_score: null всегда возвращает, при том что код один в один
Супер! Очень просто объяснено, легко установил)) Но вот вопрос - как вот соединить скрипт капчи со скриптом отправки в котором форма еще проходит валидацию, если он в отдельном файле и на jQuery?
да просто сверху сюда накинуть вашу отправку и валидацию.
@@maxgraph Максим, спасибо за видео, но оказалось не так просто накинуть её на валидацию (( Не мог бы ты показать как это делается?
Пытаюсь понять схему. 🤔 Скорость воспроизведения уменьшила - 0.75, размер экрана уменьшила до 30%, чтобы как-то видеть код. ))) В остальном - все подробно и понятно. Thank you!
помогите !!! переделать из jQuery в JS
$.ajax({
type: "POST",
url: "mail.php",
data: $("#form1").serialize(),
success: function(response) {
alert("Спасибо за заявку!");
setTimeout(function() {
$("#form1").trigger("reset");
$.fancybox.close();
}, 1000);
}
})
let formData = new FormData(передать элемент формы);
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
console.log('Отправлено');
// здесь фэнсибокс)
}
}
}
xhr.open('POST', 'mail.php', true);
xhr.send(formData);
как-то так
Лого каптчи в позишн fixed в правом нижнем углу сильно обламывает, особенно на мобильных устройствах.
А как повесить эту капчу на несколько форм?
У меня сейчас именно такой же вопрос((( если у кого-то получилось, напишите плиз
Дайте пожалуйста ссылку на то как вы настраиваете рекпчу версии 2. СПасибо.
хорошо, что у кого то работает. у меня ошибка
Uncaught ReferenceError: grecaptcha is not defined
Все круто, только шрифт бы побольше, с телефона вообще не видно ничего
Спасибо, забываю (
Круто, осталось только отправлять данные. Скинь плиз ссылку на видос где ты отправляешь письмо:))
Если ты про видео, где я отправляю с использованием капчи - такого нет :)
Сделал сегодня всё как в уроке, и всё работает! Макс, а как сделать чтобы после отправки формы, перекидывало на send.php и там уже была передача данных на сервер?
ну в таком случае надо менять логику, убирать fetch-запрос видимо
Погодите-ка, описанная автором проверка по сути направлена на что-то, что нажимает на кнопку Submit. Чаще всего это человек, ну или какой-то совсем уж древний бот.
Выходит, что сам контроллер формы капчей не защищен, а значит можно безнаказанно напрямую отправлять POST в контроллер и этот контроллер радостно будет сабмитить эти данные будучи полностью уверенным в том, что JS уже все проверил, а значит все безопасно.
А если это форма лендинга, и после отправки данные формы нужно отправить еще и на другой файл (страница с благодарностью), и там связь с црм. Как реализовать отправку потом данных пользователя туда?
Не в курсе
а в index.html - она работает?
У меня не работает. выдает ошибку Uncaught (in promise) SyntaxError: Unexpected end of JSON input. и указывает на строку в которой написано ".then(response => response.json())". Все скобки перепроверил раз 10.
Видимо надо ещё проверить)
а можете проверить ту, что на гитхабе лежит с ботом и человеком, ошибка идет, говорит что я бот, ключи верные
с кодом все нормально, ошибка была на уровне хттпс, почему-то цеплял его с соседнего сайта
большое спасибо за урок и за исходники)
отлично)
А как не для формы реализовать капчу? Например для любой ссылки... что блин кроме форм не где капча не нужна что-ли?
Ну по факту да, не нужна :)
Пробовал всё делать в одном файле mail.php. Но у меня ничего не приходит в массив responseKeys, да и вообще почта не отправляется через mail(). Это наверное связано с header(Content-type)
Ну делайте не в одном, как вариант
@@maxgraph А зачем вообще в этом файле нужен header('Content-type: application/json')? Я его убрал. У меня ошибка оказалась в том, что не поддерживалась функция file_get_contents. Заменил на другой код и заработало.
m15.ru/server_response_code - почитайте :)
и кстати, у меня все вышло
Благодарю
Пожалуйста)
Боты ещё не умеют её обходить? Меня замучали боты версия рекапчи 2. Попробую 3 версию, сегодня спам приходил , типо хрумер может её обходить, хз правда или нет
Не умеют, насколько знаю
а на локальный сервер можна установить?
Не пробовал
зачем столько воды... элементарную штуку не можешь разложить пошагово)
Бывает
Не подскажите как убрать справа ее на странице?
Просто скройте в стилях