За защитата от ботове

Разни теми, разни идеали
Правила
Уважавайте другите участници и се отнасяйте с тях така, както бихте желали те да се отнасят с вас!
Отговор
Аватар
Вилорп
Мнения: 73
Регистрация: 10 февруари 2010, 21:32
Местонахождение: Княжево под Копитото
Връзка:

За защитата от ботове

Мнение от Вилорп »

Направи ми впечатление, че при регистрацията има една много хубава защита „Колко прави 6 минус 1 (словом)”, та понеже на моя форум имим проблем с непрекъснато регващи се ботове дали бихте ми редоставили кода за вашата защита или евентуално то къде сте го гледали за да го напишете.

*обнадеждено човече*

пп. Пускам нова тема защото не намерих подходяща в която да плесна въпроса си.
Аватар
Борислав
Мнения: 1065
Регистрация: 15 ноември 2005, 17:25

Мнение от Борислав »

Направил съм го много дървено и е само за версия 2 на phpbb. Първо най-лесното:

Файл 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];
После в края на блока else if ( $mode == 'register' ) (вътре в if-а):

Код: Избиране на всичко

		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 . '“.';
		}
И накрая при $template->assign_vars (където е L_CURRENT_PASSWORD).
Преди този ред:

Код: Избиране на всичко

	$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>",
Както виждаш, има един-единствен въпрос, но ми върши прекрасна работа. При желание можеш да добавиш още в масива с въпроси и да си избираш случаен чрез array_rand().
Аватар
Вилорп
Мнения: 73
Регистрация: 10 февруари 2010, 21:32
Местонахождение: Княжево под Копитото
Връзка:

Мнение от Вилорп »

Изключително много Благодаря! Знам че не се пие и яде, ама... =)
Аватар
SecondShoe
Мнения: 421
Регистрация: 16 август 2006, 04:55

Мнение от SecondShoe »

Ето го същото нещо, но за phpbb3: Prime Anti-bot. Върши същата работа като горното, но могат да се избират няколко въпроса. Непробиваема за роботи защита, която е приятелски настроена към хората.
Отговор

Обратно към

Кой е на линия

Потребители, разглеждащи форума: 0 гости