1. Заходим на сайт http://recaptcha.net/, регистрируемся, получаем private и public ключи для вашего домена, и скачиваем библиотеку с php-кодом.
Копируем ее себе на сайт, разархивируем. Запоминаем где у вас на сервере лежит файлик 'recaptchalib.php'.
2. Заходим в домашнюю директорию WackoWiki.
Редактируем файл «actions/registration.php»
В самое начало файла, до кода
добавляем, заменяя :
Далее, ищем строки:
Сразу посли них дописываем:
Теперь собственно добавляем саму форму ReCaptcha – ищем строки:
и сразу после них добавляем:
После этого все должно заработать.
Возможные проблемы и методы решения
Глобальные переменные в библиотеке ReCaptcha
По каким то причинам, после интеграции ReCaptcha в WackoWiki, ничего не заработало. После изучения кода библиотеки было обнаружено, что в файле recaptchalib.php не видны глобальные переменные. Решение проблемы состоит в том, чтобы
1. Заккоментировать эти самые глобальные переменные в коде библиотеки и их использование с помощью оператора globals.
2. В каждую функцию, где используются эти переменные просто скопировать их.
Рассмотрим причины такого поведения библиотеки ReCaptcha, встроенной в WackoWiki.
Итак, запускается файл wacco.php с передаными ему параметрами
в нем создается объект класса Wacko и запускается функйия этого объекта Run(). Внутри этой функции происходит вызов многих других функций этого класса, и одна из этих функций делает include для файла registration.php, которая в свою очередь делает inlcude для библиотеки ReCaptcha. Но вспомним, что include в данном случае – это простое текстовое включение. Т.е. весь файл включается внутрь тела функции. Но в этом файле существуют переменные, которые библиотека считает глобальными, но после включения внутрь функции становятся локальными для этой функции, и получается что глобальных переменных с такими именами нет.