Направи ми впечатление, че при регистрацията има една много хубава защита „Колко прави 6 минус 1 (словом)”, та понеже на моя форум имим проблем с непрекъснато регващи се ботове дали бихте ми редоставили кода за вашата защита или евентуално то къде сте го гледали за да го напишете.
*обнадеждено човече*
пп. Пускам нова тема защото не намерих подходяща в която да плесна въпроса си.
За защитата от ботове
Правила
Уважавайте другите участници и се отнасяйте с тях така, както бихте желали те да се отнасят с вас!
Уважавайте другите участници и се отнасяйте с тях така, както бихте желали те да се отнасят с вас!
Направил съм го много дървено и е само за версия 2 на phpbb. Първо най-лесното:
Файл templates/subSilver/profile_add_body.tpl:
Преди реда с Visual Confirmation съм добавил {CAPTCHA}.
После идва файла includes/usercp_register.php.
Някъде в началото му:
После в края на блока else if ( $mode == 'register' ) (вътре в if-а):
И накрая при $template->assign_vars (където е L_CURRENT_PASSWORD).
Преди този ред:
Вътре в масива:
Както виждаш, има един-единствен въпрос, но ми върши прекрасна работа. При желание можеш да добавиш още в масива с въпроси и да си избираш случаен чрез array_rand().
Файл templates/subSilver/profile_add_body.tpl:
Преди реда с Visual Confirmation съм добавил {CAPTCHA}.
После идва файла includes/usercp_register.php.
Някъде в началото му:
Код: Избиране на всичко
$captchas = array(
'Колко прави 6 минус 2? (словом)' => 'четири',
);
$captchaQuestionField = 'question';
$captchaAnswerField = 'captcha';
$captchaQuestion = @$_POST[$captchaQuestionField];
$captchaAnswer = @$_POST[$captchaAnswerField];
Код: Избиране на всичко
if ( ! isset($captchas[$captchaQuestion]) ) {
$error = true;
$error_msg .= ( ( empty($error_msg) ) ? '' : '<br />' ) . 'Клиента ви не е успял да предаде въпроса, защитаващ от спамботове! Свържете се с администратора и му съобщете за проблема.';
}
if ( ! preg_match("/^$captchaAnswer$/ui", $captchas[$captchaQuestion]) ) {
$error = true;
$error_msg .= ( ( empty($error_msg) ) ? '' : '<br />' ) . 'Хм… Опитайте да отговорите правилно на въпроса „' . $captchaQuestion . '“.';
}
Преди този ред:
Код: Избиране на всичко
$captchaQuestion = key($captchas);
Код: Избиране на всичко
'CAPTCHA' => "<tr><td class='row1'><input type='hidden' name='$captchaQuestionField' value='$captchaQuestion'><label for='$captchaAnswerField'>$captchaQuestion *</label></td><td class='row2'><input type='text' size='10' name='$captchaAnswerField' id='$captchaAnswerField'></td></tr>",
- SecondShoe
- Мнения: 421
- Регистрация: 16 август 2006, 04:55
Ето го същото нещо, но за phpbb3: Prime Anti-bot. Върши същата работа като горното, но могат да се избират няколко въпроса. Непробиваема за роботи защита, която е приятелски настроена към хората.
Кой е на линия
Потребители, разглеждащи форума: 0 гости