reCAPTCHA - лыжи не едут

Jaf4
На сайте с 03.08.2009
Offline
804
1856

Нужно защитить форму обратной связи на сайте. Сайт на php, CMS нет.

Все по старинке, есть форма на странице, есть файл обработчик, который отправляет данные.

Пытался найти нормальный HowTo по монтажу рекапчи. Найти ничего не смог.

Что делал:

1 получаем ключи, подключаем скрипты. Ключи, естественно вписываем.

2 устанавливаем код вывода капчи на странце, возле кнопки "отправить".

3 добавляем файл на хостинг - библиотечку recaptchalib.php

4? че дальше?

Все изрыл уже. Достало. Можете ткнуть носом?

Зы не надо перелагать другие капчи, не нужно писать, что капча плохо и неэффективно. Есть вводные данные, задача с рекапчей нужно решить.

Код нужно публиковать?

ЗЗЫ без капчи все отправляется, все настроено. Нужно установить рекапчу на рабочий код.

New! NVMe VPS от SmartApe.ru (https://goo.gl/eoYYkS)
MI
На сайте с 16.07.2008
Offline
74
#1

Я вот использовал этот официальный пример https://github.com/google/recaptcha/blob/master/examples/example-captcha.php

Надо для сайта секретный ключ получить и ключ сайта, ключ сайта в div прописать.

div с классом g-recaptcha должен быть в <form> теге.

В нём всё понятно?

Код лучше выложить.

Jaf4
На сайте с 03.08.2009
Offline
804
#2

файл обработчик

<?php
// Check for empty fields
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['phone']) ||
empty($_POST['message']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "No arguments Provided!";
return false;
}

$name = $_POST['name'];
$email_address = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];



// Create the email and send the message
$to = 'mymail@mail.ru'; // Add your email address inbetween the '' replacing yourname@yourdomain.com - This is where the form will send a message to.
$email_subject = "Website contact Form: $name";
$email_body = "You have received a new message from your website contact form.\n\n"."Here are the details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nMessage:\n$message";
$headers = "From: sale@domain.ru\n"; // This is the email address the generated message will be from. We recommend using something like noreply@yourdomain.com.
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
return true;
?>


---------- Добавлено 07.08.2016 в 22:11 ----------

форма, часть кода страницы с отправкой сообщения

                <div class="col-lg-8 col-lg-offset-2">
<!-- To configure the contact form email address, go to mail/contact_me.php and update the email address in the PHP file on line 19. -->
<!-- The form should work on most web servers, but if the form is not working you may need to configure your web server differently. -->
<form name="sentMessage" id="contactForm" novalidate>
<div class="row control-group">
<div class="form-group col-xs-12 floating-label-form-group controls">
<label>Name</label>
<input type="text" class="form-control" placeholder="Name" id="name" required data-validation-required-message="Please enter your name.">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="row control-group">
<div class="form-group col-xs-12 floating-label-form-group controls">
<label>Email Address</label>
<input type="email" class="form-control" placeholder="Email Address" id="email" required data-validation-required-message="Please enter your email address.">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="row control-group">
<div class="form-group col-xs-12 floating-label-form-group controls">
<label>Phone Number</label>
<input type="tel" class="form-control" placeholder="Phone Number" id="phone" required data-validation-required-message="Please enter your phone number.">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="row control-group">
<div class="form-group col-xs-12 floating-label-form-group controls">
<label>Message</label>
<textarea rows="5" class="form-control" placeholder="Message" id="message" required data-validation-required-message="Please enter a message."></textarea>
<p class="help-block text-danger"></p>
</div>
</div>
<br>
<div id="success"></div>
<div class="row">
<div class="form-group col-xs-12">
<button type="submit" class="btn btn-success btn-lg">Send</button>
</div>
</div>
</form>
MI
На сайте с 16.07.2008
Offline
74
#3

По идее этого достаточно, но вышел говно код

<?php 
// Check for empty fields
if(empty($_POST***91;'name'***93;) ||
empty($_POST***91;'email'***93;) ||
empty($_POST***91;'phone'***93;) ||
empty($_POST***91;'message'***93;) ||
!filter_var($_POST***91;'email'***93;,FILTER_VALIDATE_EMAIL))
{
echo "No arguments Provided!";
return false;
}

require_once __DIR__ . '/../vendor/autoload.php';
$siteKey = '';
$secret = '';
$lang = 'en';

$recaptcha = new \ReCaptcha\ReCaptcha($secret);
$resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);

$name = $_POST***91;'name'***93;;
$email_address = $_POST***91;'email'***93;;
$phone = $_POST***91;'phone'***93;;
$message = $_POST***91;'message'***93;;


if($resp->isSuccess()) {
// Create the email and send the message
$to = 'mymail@mail.ru'; // Add your email address inbetween the '' replacing yourname@yourdomain.com - This is where the form will send a message to.
$email_subject = "Website contact Form: $name";
$email_body = "You have received a new message from your website contact form.\n\n"."Here are the details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nMessage:\n$message";
$headers = "From: sale@domain.ru\n"; // This is the email address the generated message will be from. We recommend using something like noreply@yourdomain.com.
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
return true;
}

return false;
?>


---------- Добавлено 07.08.2016 в 21:18 ----------

Jaf4:
форма, часть кода страницы с отправкой сообщения

Надо внутри <form> вставить div и js и заполнить data-sitekey

            <div class="g-recaptcha" data-sitekey="ваш ключ reCaptcha"></div>
<script type="text/javascript"
src="https://www.google.com/recaptcha/api.js?hl=en">
</script>


---------- Добавлено 07.08.2016 в 21:20 ----------

Ещё в <form> у вас нет action на PHP скрипт, где проверка капчи и отправка почты будет проходить. Это если вы не через JavaScript отправляете данные на скрипт.
temniy
На сайте с 15.03.2008
Offline
261
#4

вот толковый мануал - http://webdesign.tutsplus.com/ru/tutorials/how-to-integrate-no-captcha-recaptcha-in-your-website--cms-23024

Коротко -

в форму вставить -


<script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="6LcePAATAAAAAGPRWgx90814DTjgt5sXnNbV5WaW"></div>

В обработчик вставить -


require_once "recaptchalib.php";

// ваш секретный ключ
$secret = "6LcePAATAAAAABjXaTsy7gwcbnbaF5XgJKwjSNwT";

// пустой ответ
$response = null;

// проверка секретного ключа
$reCaptcha = new ReCaptcha($secret);

// if submitted check response
if ($_POST["g-recaptcha-response"]) {
$response = $reCaptcha->verifyResponse(
$_SERVER["REMOTE_ADDR"],
$_POST["g-recaptcha-response"]
);
}

if ($response != null && $response->success) {
echo "Проверка пройдена";
} else {
echo "Проверка не пройдена";
}

Файл сохранить рядом с обработчиком - https://github.com/google/recaptcha/blob/1.0.0/php/recaptchalib.php

⭐ Лучший хостинг от 4 евро, VPS от 6 евро - разные локации - любые карты - скидки до 20% - https://fornex.com/c/ffi2e3/ru/services/
Jaf4
На сайте с 03.08.2009
Offline
804
#5

Капча заработала. metadon.info помог.

Всем ответившим в теме +++

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий