Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Установка ReCaptcha на PHP страницу

Автор: SkyAn
Дата сообщения: 05.01.2012 14:23
Есть форма регистрации написанная на PHP. На нее лезет много ботов. Решил их отфильтровать с помощью ReCaptcha от Google. Сделал все по их инструкции, каптча появилась, но она не реагирует на правильность вводимых. То есть регистрация происходит все время. При этом происходит перенаправление на другую страницу. Но меня интересует, чтоб проверка проходила на той же странице и при неправильной каптча выводило сообщение и не сбрасывало форму. поделитесь идеями как это сделать.
Автор: Nagolder
Дата сообщения: 05.01.2012 14:57
Ну это только когда экстрасенсы из отпуска вернутся...

А если хотите, чтоб раньше что-то произошло - то ссылку на страницу дайте, где весь этот ужас происходит
Автор: Cheery
Дата сообщения: 05.01.2012 20:23
SkyAn

Цитата:
То есть регистрация происходит все время. При этом происходит перенаправление на другую страницу. Но меня интересует, чтоб проверка проходила на той же странице и при неправильной каптча выводило сообщение и не сбрасывало форму. поделитесь идеями как это сделать

код показывайте.
там ничего вообще сложного нет
Автор: SkyAn
Дата сообщения: 06.01.2012 15:18
я нашел как сделать все в одно файле и оно прекрасно работает в том файле. пытаюсь перенести в свою тестовую старицу без формы, мне все время выдает "The reCAPTCHA failed with this message: incorrect-captcha-sol Please try again." не зависимо от заполнения. Как понимаю при загрузке страницы приходящее значение не пустое как должно быть. при попытке очистить, чистится форма и все значения которые вводятся.
Автор: Nagolder
Дата сообщения: 06.01.2012 16:57

Цитата:
ссылку на страницу дайте


Цитата:
код показывайте.

Автор: SkyAn
Дата сообщения: 10.01.2012 14:45
вот файл regist.php
Автор: Cheery
Дата сообщения: 10.01.2012 20:02
SkyAn
А с чего он должен проверять когда вы его вставили таким образом то??
Все то, что делается в браузере, подделывается и вы не можете доверять данным.
А у вас в php даже проверки нет - вот как надо использовать
http://code.google.com/apis/recaptcha/docs/php.html

а так - вы же не думаете, что проверка идет автоматически даже в вашем случае?
читайте
http://code.google.com/apis/recaptcha/docs/verify.html

но без php я бы вообще стал полагаться на такую форму, потому что ботам пофиг тогда есть ли капча или нет - они просто собирают элементы формы и формируют запрос как от браузера.
при этом, конечно, можно сделать кое какой "финт ушами" и добавить с помощью js невидимое поле, к примеру, которого нет изначально в форме. А уже на основе наличия его оценивать - бот это или человек.

правда если кто то захочет поспамить и настроит своего бота именно под вашу форму, проанализировав отправляемое на сервер содержимое, то может обойти такую "защиту".

вот и пользуйтесь PHP API для создания формы и проверки кода из нее

ps: есть и другие способы защиты (об изменении формы с помощью js я уже сказал)
Защита форм от роботов (скрипт)
Автор: SkyAn
Дата сообщения: 11.01.2012 12:13

Цитата:
А у вас в php даже проверки нет - вот как надо использовать
http://code.google.com/apis/recaptcha/docs/php.html

Я пробовал прикрутить и такой код. Все равно не срабатывала капча. А если пробую поставить его не странице без формы. Ну чтоб проверить правильность установки, все время выдает ошибку "The reCAPTCHA wasn't entered correctly. Go back and try it again."
Нашел ссылку на демо капчу. Хочу настроить ее именно так, но не получается.
Автор: Cheery
Дата сообщения: 11.01.2012 21:28
SkyAn

Цитата:
Я пробовал прикрутить и такой код. Все равно не срабатывала капча

а у меня работает, поэтому и говорю - показывайте код. я реализовал так, как у них показано.

Цитата:
А если пробую поставить его не странице без формы

без формы данные отправляться не будут, если только с помощью ajax
Автор: SkyAn
Дата сообщения: 12.01.2012 14:41
Вот я попытался вставить тот код из демо для капчи regist.php
Автор: Cheery
Дата сообщения: 12.01.2012 18:22
SkyAn
а если думать??
зачем вы проверку правильности делаете в месте, где выводится форма, а не там, где работаете с данными из формы??
проверку нужно делать сразу после

Код: if (isset($_POST['from_registration']) and $_POST['from_registration'] == "from_registration") {
Автор: SkyAn
Дата сообщения: 14.03.2012 15:31
все равно у меня не очень получается заставить работать проверку. каптча отображается, но не выполняет свою функцию. я понимаю, что на более простой регистрации я б вставил ее без проблем. но этот сайт мне достался по наследству.
может можешь подправит этот код и сбросить мне, потому что я не знаю уже что делать
Автор: TemaZosin
Дата сообщения: 22.08.2015 20:52
Помогите мне прикрепить капчу, плз. Если что сайт cutmylink.gq (редирект отключил сейчас после сокращения).

https://yadi.sk/d/MFO7LuOHibaBs
Автор: Mavrikii
Дата сообщения: 22.08.2015 21:22
TemaZosin
а сами что пробовали сделать?
вот же пример - https://github.com/google/recaptcha/blob/master/examples/example-captcha.php
Автор: TemaZosin
Дата сообщения: 23.08.2015 04:11
Mavrikii
пробовал, боты все равно засерают как-то. у меня проблема с тем, чтобы кнопка "сократить" в моем срипте, сначала проверила каптчу, а после уже сокращала.
Автор: Mavrikii
Дата сообщения: 23.08.2015 06:05
TemaZosin
ну так покажите как пробовали, проще найти проблемное место.
Автор: bigorv1967
Дата сообщения: 03.12.2015 14:55
Помогите прикрутить новую Капчу от Гугл (с картинками) на форму отправки поста в форуме (PunBB). Я в PHP программировании понимаю не очень. По рекомендациям Google добавил в файл post.php, который выводит форму для отправки сообщения в форум строки:


Код: <script src='https://www.google.com/recaptcha/api.js'></script>
Автор: K S
Дата сообщения: 03.12.2015 15:13
bigorv1967
Пример из руководства. Достаточно наглядный и понятный. Скачайте, разберите.
Автор: bigorv1967
Дата сообщения: 04.12.2015 02:08
Разобрать то, что там написано, мне пока знаний не хватает.

Капчу на форму я вывел, она работает.
Как мне при нажатии на кнопку "Submit" передать в POST запросе параметр "g-recaptcha-response" - где мне его взять?

Написал Post запрос с помощью cURL так:

Код:
    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $ch = curl_init(); // инициализируем сессию curl
    curl_setopt($ch, CURLOPT_URL, $url); // указываем URL, куда отправлять POST-запрос
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// разрешаем перенаправление
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // указываем, что результат запроса следует передать в переменную, а не вывести на экран
    curl_setopt($ch, CURLOPT_TIMEOUT, 5); // таймаут соединения
    curl_setopt($ch, CURLOPT_POST, 1); // указываем, что данные надо передать именно методом POST
Автор: K S
Дата сообщения: 04.12.2015 07:14
[more] [/more]
bigorv1967

Цитата:
Разобрать то, что там написано, мне пока знаний не хватает

А знаний там особых и не нужно. Там всё уже написано, надо только вставить:


Код:
if (isset($_POST['g-recaptcha-response'])):
// The POST data here is unfiltered because this is an example.
// In production, *always* sanitise and validate your input'
?>
<h2><tt>POST</tt> data</h2>
<tt><pre><?php var_export($_POST); ?></pre></tt>
<?php
// If the form submission includes the "g-captcha-response" field
// Create an instance of the service using your secret
$recaptcha = new \ReCaptcha\ReCaptcha($secret);

// If file_get_contents() is locked down on your PHP installation to disallow
// its use with URLs, then you can use the alternative request method instead.
// This makes use of fsockopen() instead.
// $recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\SocketPost());

// Make the call to verify the response and also pass the user's IP address
$resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);

if ($resp->isSuccess()):
// If the response is a success, that's it!
?>
<h2>Success!</h2>
<p>That's it. Everything is working. Go integrate this into your real project.</p>
<p><a href="/">Try again</a></p>
<?php
else:
// If it's not successful, then one or more error codes will be returned.
?>
<h2>Something went wrong</h2>
<p>The following error was returned: <?php
foreach ($resp->getErrorCodes() as $code) {
echo '<tt>' , $code , '</tt> ';
}
?></p>
<p>Check the error code reference at <tt><a href="https://developers.google.com/recaptcha/docs/verify#error-code-reference">https://developers.google.com/recaptcha/docs/verify#error-code-reference</a></tt>.
<p><strong>Note:</strong> Error code <tt>missing-input-response</tt> may mean the user just didn't complete the reCAPTCHA.</p>
<p><a href="/">Try again</a></p>
<?php
endif;
Автор: dariusii
Дата сообщения: 05.05.2016 11:52
А в чем прикол этой проверки?
Ну, поставил я галочку рядом с "я не робот". Никаких всплывающих картинок на проверку. лишь изредка вылетает окно с выбором картинок.
Автор: Mavrikii
Дата сообщения: 05.05.2016 19:45
dariusii

Цитата:
А в чем прикол этой проверки?

там много чего используется для проверки того, что не бот, а обычный браузер.
всяческие фичи HTML5 и не только

Страницы: 1

Предыдущая тема: Не могу отключить Авто play и повтор


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.