1. Заходим на сайт http://recaptcha.net/, регистрируемся, получаем private и public ключи для вашего домена, и скачиваем библиотеку с php-кодом.
Копируем ее себе на сайт, разархивируем. Запоминаем где у вас на сервере лежит файлик 'recaptchalib.php'.
2. Заходим в домашнюю директорию WackoWiki.
Редактируем файл «actions/registration.php»
В самое начало файла, до кода
добавляем, заменяя :
Далее, ищем строки:
Сразу посли них дописываем:
Теперь собственно добавляем саму форму ReCaptcha – ищем строки:
и сразу после них добавляем:
После этого все должно заработать.
2. Возможные проблемы и методы решения
2.1. Глобальные переменные в библиотеке ReCaptcha
По каким то причинам, после интеграции ReCaptcha в WackoWiki, ничего не заработало. После изучения кода библиотеки было обнаружено, что в файле recaptchalib.php не видны глобальные переменные. Решение проблемы состоит в том, чтобы
1. Заккоментировать эти самые глобальные переменные в коде библиотеки и их использование с помощью оператора globals.
2. В каждую функцию, где используются эти переменные просто скопировать их.
Рассмотрим причины такого поведения библиотеки ReCaptcha, встроенной в WackoWiki.
Итак, запускается файл wacko.php с передаными ему параметрами
в нем создается объект класса Wacko и запускается функция этого объекта Run(). Внутри этой функции происходит вызов многих других функций этого класса, и одна из этих функций делает include для файла registration.php, которая в свою очередь делает inlcude для библиотеки ReCaptcha. Но вспомним, что include в данном случае – это простое текстовое включение. Т.е. весь файл включается внутрь тела функции. Но в этом файле существуют переменные, которые библиотека считает глобальными, но после включения внутрь функции становятся локальными для этой функции, и получается что глобальных переменных с такими именами нет.
2.2. Браузер Opera и ReCaptcha
Для браузера Opera иногда бывает важна валидность кода, которую можно проверить на http://w3c.org. Сразу после установки ReCaptcha в WackaWiki код становиться не валидным, и регистрация не проходит. Решение: сделать код валидным, для этого:
1. Открыть файл recaptchalib.php, найти все вставки html-кода, и переписать их под xhtml 1.0, в частности закрыть все одиночные теги (например заменить <br>" на "<br />".
2. Ошибка самой WackoWiki (а точнее некоторых ее форматтеров), которая зачем-то вставляет «вокруг» формы регистрации тег <p>". Решение следующее: открываем «handlers\page\show.php для редактирования, находим строку
и заменяем ее на
3. Дополнительно: diff файлы.
Для установки с помощью утилиты patch можно использовать следующие diff-файлы
recaptchalib.php
– проблема с глобальными переменными и соответствие html-кода стандарту xhtml 1.0
«handlers/page/show.php»
«actions/registration.php» Не забудте заполнить keys.