Как получить доступ к параметрам Recaptcha [recaptcha_challenge_field и recaptcha_response_field]? - PullRequest
3 голосов
/ 16 февраля 2011

Я новичок в использовании веб-службы Google Recaptcha для блокировки спама на некоторых веб-страницах на моем веб-сайте, а также в использовании AJAX путем объединения Javascript и PHP в ответ на мою веб-страницу.

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

Документация Google Code recaptcha

Проблема, с которой я столкнулся, заключается в двух полях, используемых в процессе проверки [recaptcha_challenge_field и recaptcha_response_field]

Когда я вызываю функцию recaptcha_check_answer в verify.php, она выдает мне следующую ошибку: -

некорректный-каптч золь

Это означает, что [recaptcha_challenge_field и recaptcha_response_field] имеют значение null и не определены.

Эти два поля и переменные должны иметь входные данные в PHP-библиотеке reCAPTCHA, которую я использовал во время ее процесса, и должны иметь геттеры, чтобы иметь их и передавать в упомянутую функцию.

Я искал php-файл recaptchalib.php, но не нашел.

Стоит ли добавлять новые элементы ввода скрытого типа и переименовывать их с помощью recaptcha_challenge_field и recaptcha_response_field для хранения параметров recaptcha?

Мне интересно, как я могу передать их правильно, оставив их, как сказал гид, но это не сработало должным образом. Нужно ли мне определять новые переменные для них и как связать их с фактическими параметрами рекапчи.

Я хотел бы спросить, кто реализовал recaptcha и использовал его, прежде чем рассказать мне, как решить эту проблему, и я благодарен за вашу помощь и заранее спасибо за ваш ответ

1 Ответ

1 голос
/ 16 сентября 2011

Код на стороне клиента, предоставленный в http://code.google.com/apis/recaptcha/docs/php.html:

require_once('recaptchalib.php');<br />
$publickey = "your_public_key"; // you got this from the signup page<br />
echo recaptcha_get_html($publickey);

расширяется до:

<script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=your_public_key"></script>

<noscript>
    <iframe src="http://www.google.com/recaptcha/api/noscript?k=your_public_key" height="300" width="500" frameborder="0"></iframe><br/>
    <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
    <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
</noscript>

Прямо сейчас я заставляю работать версию "noscript", включая только строки внутри тега noscript; не сам тег, а удаление тега сценария и его содержимого полностью. Недостатком является то, что вы должны выполнить копирование вручную, как часть процесса утверждения.

Версия скрипта отображает, обновляет, принимает ввод и т. Д., Но переменные CGI recaptcha_challenge_field recaptcha_response_field остаются неустановленными, согласно print_r($_POST); в целевом PHP формы.

Итак, у меня есть половина решения проблемы, изложенной выше.

...