Установка reCAPTCHA на LiveStreet
26 ноября 2011| Рубрика: LiveStreet
Понятно, что стандартная каптча не сможет хорошо защитить от спаммеров. Поэтому займемся её заменой. Я для себя выбрал reCAPTCHA, хотя её многие и не любят. Итак, идем сюда и получаем ключи: Public Key и Private Key. Public будем вставлять в JavaScript и он может быть найден в исходном коде, Private нужно хранить в секрете и использовать только на стороне сервера.
!!! Инструкция более не актуальна — собрал плагином !!!
Итак, приступаем к замене каптчи. Идем в /templates/skin/название-темы/actions/ActionRegistration и открываем файл index.tpl , в котором заменяем
<img src="{cfg name='path.root.engine_lib'}/external/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId}" onclick="this.src='{cfg name='path.root.engine_lib'}/external/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId}&n='+Math.random();" /> <p><input type="text" name="captcha" value="" maxlength="3" class="input-100" /></p>
на
<script type="text/javascript" src="http://api.recaptcha.net/challenge?k=ЗДЕСЬ_ВАШ_Public_Key"> </script><noscript>Включите JavaScript или обновите ваш браузер!</noscript>
Только не забудьте заменить ЗДЕСЬ_ВАШ_Public_Key на полученный ранее Public Key. Перед этим еще можно добавить
<script type="text/javascript"> var RecaptchaOptions = { custom_translations : { instructions_visual : "Введите два слова:", instructions_audio : "Введите что вы слышите", play_again : "Включить заново", cant_hear_this : "Скачать в формате MP3", visual_challenge : "Визуальный режим", audio_challenge : "Режим аудио", refresh_btn : "Обновить", help_btn : "Помощь", incorrect_try_again : "Неверно. Пожалуйста, попробуйте еще раз.", }, lang : 'ru', // Unavailable while writing this code (just for audio challenge) theme : 'white' // Make sure there is no trailing ',' at the end of the RecaptchaOptions dictionary }; </script>
для русификации. Подробнее о кастомизации каптчи смотрите здесь.
Далее качаем саму библиотеку каптчи отсюда, распаковываем и кладем её содержимое в /engine/lib/external/recaptcha. Далее идем в /classes/actions, открываем файл ActionRegistration.class.php. Добавляем в начало файла подключение библиотеки
require_once ($_SERVER['DOCUMENT_ROOT']."/engine/lib/external/recaptcha/recaptchalib.php");
Затем удаляем или комментируем
if (!isset($_SESSION['captcha_keystring']) or $_SESSION['captcha_keystring']!=strtolower(getRequest('captcha'))) { $this->Message_AddError($this->Lang_Get('registration_captcha_error'),$this->Lang_Get('error')); $bError=true;
и добавляем
$resp = null; if (array_key_exists('recaptcha_response_field',$_POST)){ $resp = recaptcha_check_answer ('ЗДЕСЬ_ВАШ_Private_Key',$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);} if ($resp==null or !$resp->is_valid){ $this->Message_AddError($this->Lang_Get('registration_captcha_error'),$this->Lang_Get('error')); $bError=true;
Надеюсь не нужно объяснять, что нужно заменить ЗДЕСЬ_ВАШ_Private_Key на Private Key. =)
Ручная установка reCAPTCHA на LiveStreet 0.5.1 завершена!