MyWackoSite: WackoWikiRecaptcha ...

Home Page | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  
Оглавление документа

1. Установка ReCaptcha на WackoWiki R4.2

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.

4. Скрипт автоматической установки

Доступен здесь: http://swsoft.nsu.ru/~abaturin/recaptcha_install.tar.gz
Установка: разархивируйте куда-нибудь и прочитайте readme.txt.

5. Ссылки

Сайт WackoWiki: http://wackowiki.com/
Сайт ReCapture: http://recaptcha.net/
Английская версия этого документа: http://swsoft.nsu.ru/WackoWiki/WackoWikiRecaptchaEN
 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]