Есть форма регистрации написанная на PHP. На нее лезет много ботов. Решил их отфильтровать с помощью ReCaptcha от Google. Сделал все по их инструкции, каптча появилась, но она не реагирует на правильность вводимых. То есть регистрация происходит все время. При этом происходит перенаправление на другую страницу. Но меня интересует, чтоб проверка проходила на той же странице и при неправильной каптча выводило сообщение и не сбрасывало форму. поделитесь идеями как это сделать.
» Установка ReCaptcha на PHP страницу
Ну это только когда экстрасенсы из отпуска вернутся...
А если хотите, чтоб раньше что-то произошло - то ссылку на страницу дайте, где весь этот ужас происходит
А если хотите, чтоб раньше что-то произошло - то ссылку на страницу дайте, где весь этот ужас происходит
SkyAn
Цитата:
код показывайте.
там ничего вообще сложного нет
Цитата:
То есть регистрация происходит все время. При этом происходит перенаправление на другую страницу. Но меня интересует, чтоб проверка проходила на той же странице и при неправильной каптча выводило сообщение и не сбрасывало форму. поделитесь идеями как это сделать
код показывайте.
там ничего вообще сложного нет
я нашел как сделать все в одно файле и оно прекрасно работает в том файле. пытаюсь перенести в свою тестовую старицу без формы, мне все время выдает "The reCAPTCHA failed with this message: incorrect-captcha-sol Please try again." не зависимо от заполнения. Как понимаю при загрузке страницы приходящее значение не пустое как должно быть. при попытке очистить, чистится форма и все значения которые вводятся.
Цитата:
ссылку на страницу дайте
Цитата:
код показывайте.
вот файл regist.php
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 я уже сказал)
Защита форм от роботов (скрипт)
А с чего он должен проверять когда вы его вставили таким образом то??
Все то, что делается в браузере, подделывается и вы не можете доверять данным.
А у вас в 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 я уже сказал)
Защита форм от роботов (скрипт)
Цитата:
А у вас в php даже проверки нет - вот как надо использовать
http://code.google.com/apis/recaptcha/docs/php.html
Я пробовал прикрутить и такой код. Все равно не срабатывала капча. А если пробую поставить его не странице без формы. Ну чтоб проверить правильность установки, все время выдает ошибку "The reCAPTCHA wasn't entered correctly. Go back and try it again."
Нашел ссылку на демо капчу. Хочу настроить ее именно так, но не получается.
SkyAn
Цитата:
а у меня работает, поэтому и говорю - показывайте код. я реализовал так, как у них показано.
Цитата:
без формы данные отправляться не будут, если только с помощью ajax
Цитата:
Я пробовал прикрутить и такой код. Все равно не срабатывала капча
а у меня работает, поэтому и говорю - показывайте код. я реализовал так, как у них показано.
Цитата:
А если пробую поставить его не странице без формы
без формы данные отправляться не будут, если только с помощью ajax
Вот я попытался вставить тот код из демо для капчи regist.php
SkyAn
а если думать??
зачем вы проверку правильности делаете в месте, где выводится форма, а не там, где работаете с данными из формы??
проверку нужно делать сразу после
Код: if (isset($_POST['from_registration']) and $_POST['from_registration'] == "from_registration") {
а если думать??
зачем вы проверку правильности делаете в месте, где выводится форма, а не там, где работаете с данными из формы??
проверку нужно делать сразу после
Код: if (isset($_POST['from_registration']) and $_POST['from_registration'] == "from_registration") {
все равно у меня не очень получается заставить работать проверку. каптча отображается, но не выполняет свою функцию. я понимаю, что на более простой регистрации я б вставил ее без проблем. но этот сайт мне достался по наследству.
может можешь подправит этот код и сбросить мне, потому что я не знаю уже что делать
может можешь подправит этот код и сбросить мне, потому что я не знаю уже что делать
Помогите мне прикрепить капчу, плз. Если что сайт cutmylink.gq (редирект отключил сейчас после сокращения).
https://yadi.sk/d/MFO7LuOHibaBs
https://yadi.sk/d/MFO7LuOHibaBs
TemaZosin
а сами что пробовали сделать?
вот же пример - https://github.com/google/recaptcha/blob/master/examples/example-captcha.php
а сами что пробовали сделать?
вот же пример - https://github.com/google/recaptcha/blob/master/examples/example-captcha.php
Mavrikii
пробовал, боты все равно засерают как-то. у меня проблема с тем, чтобы кнопка "сократить" в моем срипте, сначала проверила каптчу, а после уже сокращала.
пробовал, боты все равно засерают как-то. у меня проблема с тем, чтобы кнопка "сократить" в моем срипте, сначала проверила каптчу, а после уже сокращала.
TemaZosin
ну так покажите как пробовали, проще найти проблемное место.
ну так покажите как пробовали, проще найти проблемное место.
Помогите прикрутить новую Капчу от Гугл (с картинками) на форму отправки поста в форуме (PunBB). Я в PHP программировании понимаю не очень. По рекомендациям Google добавил в файл post.php, который выводит форму для отправки сообщения в форум строки:
Код: <script src='https://www.google.com/recaptcha/api.js'></script>
Код: <script src='https://www.google.com/recaptcha/api.js'></script>
bigorv1967
Пример из руководства. Достаточно наглядный и понятный. Скачайте, разберите.
Пример из руководства. Достаточно наглядный и понятный. Скачайте, разберите.
Разобрать то, что там написано, мне пока знаний не хватает.
Капчу на форму я вывел, она работает.
Как мне при нажатии на кнопку "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
Капчу на форму я вывел, она работает.
Как мне при нажатии на кнопку "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
[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;
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
Цитата:
там много чего используется для проверки того, что не бот, а обычный браузер.
всяческие фичи HTML5 и не только
Цитата:
А в чем прикол этой проверки?
там много чего используется для проверки того, что не бот, а обычный браузер.
всяческие фичи HTML5 и не только
Страницы: 1
Предыдущая тема: Помогите пожалуста с MySql
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.