Для начала добавим CAPTCHA в формы регистрации и восстановления пароля.
Нам понадобиться скрипт
Последовательность действий по шагам:
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 ); |
Спасибо. Попробую на форме контакты
по сути тоже самое (почти), только уже всё правлено, достаточно просто скопировать www.eco-money.ru/forum/topic?id=19
и капча будет работать как надо. удачи
As, спасибо, что напомнили о готовых патчах внедрения captcha, кстати ваш вариант видимо для Joomla 1.5.X.
Здравствуйте а как в jdownloads внедрить капчу?
Честно не знаю, но подозреваю, что можно спросить у разработчика.