Для начала добавим CAPTCHA в формы регистрации и восстановления пароля.
Нам понадобиться скрипт (сгодятся и аналоги) и препарируемые файлы Joomla 1.0.X в составе: /components/com_registration/registration.html.php и /components/com_registration/registration.php.
Последовательность действий по шагам:
1. Открывает файл /components/com_registration/registration.html.php и добавляем код.
Для формы восстановления пароля:
<input type="text" name="confirmEmail" class="inputbox" size="40" /> </td> </tr> <!-- PATCH BEGIN --> <tr> <td> Enter text shown below: </td> <td> <input type="text" name="captcha" class="inputbox" size="20" /> </td> </tr> <tr> <td></td> <td><?php session_start(); ?> <img src="/kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id(); ?>" /> </td> </tr> <!-- PATCH END --> <tr> <td colspan="2"> <input type="submit" class="button" value="<?php echo _BUTTON_SEND_PASS; ?>" />
Для формы регистрации:
} else if (r.exec(form.password.value)) {
alert( "<?php printf( addslashes( html_entity_decode(_VALID_AZ09) ),
addslashes( html_entity_decode(_REGISTER_PASS) ), 6 );?>" );
// PATCH BEGIN
} else if (form.captcha.value == "") {
alert( "<?php echo 'Попробуйте ввести код еще раз'; ?>" );
// PATCH END
} else {
form.submit();и тут:
<input class="inputbox" type="password" name="password2" size="40" value="" /> </td> </tr> <!-- PATCH BEGIN --> <tr> <td> Enter text shown below: * </td> <td> <input type="text" name="captcha" class="inputbox" size="20" /> </td> </tr> <tr> <td></td> <td><?php session_start(); ?> <img src="/kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id(); ?>" /> </td> </tr> <!-- PATCH END --> <tr> <td colspan="2">
2. Мы добавили вывод картинки с капчей и формы для ее отправки в формы, теперь необходимо обеспечить правильность введенного кода в файле /components/com_registration/registration.php.
Для формы восстановления пароля:
$_live_site = $mosConfig_live_site; $_sitename = $mosConfig_sitename; // PATCH BEGIN session_start(); $captcha=$_POST['captcha']; if(!isset($_SESSION['captcha_keystring']) || $_SESSION['captcha_keystring']!==$captcha) { unset($_SESSION['captcha_keystring']); mosErrorAlert('You need to enter the code shown.'); } session_unset(); session_write_close(); // PATCH END $checkusername = stripslashes( mosGetParam( $_POST, 'checkusername', '' ) ); $confirmEmail = stripslashes( mosGetParam( $_POST, 'confirmEmail', '') );
Для формы регистрации:
// simple spoof check security josSpoofCheck(); // PATCH BEGIN session_start(); $captcha=$_POST['captcha']; if(!isset($_SESSION['captcha_keystring']) || $_SESSION['captcha_keystring']!==$captcha) { unset($_SESSION['captcha_keystring']); mosErrorAlert('You need to enter the code shown.'); } session_unset(); session_write_close(); // PATCH END $row = new mosUser( $database );