Simple Anti-Spam Redux

Простая анти-спам модификация для PunBB/FluxBB 1.2, написанная Мэттом Фретуэллом (Matt Fretwell (MattF)) в теме, посвящённой SAS-модификации sirena-ы на punbb.org. Готовясь к последним дням ветки версий 1.2, я решил отполировать эту модификацию немного. Изначальный код дополнен исправлениями ошибок, найденными Мэттом. Также я добавил языковую абстракцию.

Итак, это простая анти-спам модификация, основанная на тесте Тьюринга (арифметические или текстовые вопросы). Работает с высокой степенью эффективности (на форуме с небольшим объёмом траффика мне удаётся блокировать 100% автоматических регистраций). Протестировано на версиях 1.2.15, 1.2.18 — 1.2.20.

Планы

Поддержка защиты гостевых записей (post.php), больше языковых файлов (приму помощь с благодароностью, пишите на postmaster [at] theug [dot] pp [dot] ru), возможно включение администраторской панели. Затем, когда выйдет 3-я бета-версия FluxBB 1.3, я начну работу над расширением в новой системе.

Установка

1. Создайте ./include/user/sas.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
 
session_start();
if (!isset($_SESSION['answer']) || $_SESSION['answer'] == '')
{
	$number = rand(1, 5); // Измените второе число так, чтобы оно соответствовало числу вопросов.
 
// Массив вопросов
 
	$questions = array(
 
	'q1' => '4 + 5 =',
	'q2' => '12 - 6 =',
	'q3' => '3 + 2 =',
	'q4' => '8 - 1 =',
	'q5' => '8 - 4 ='
 
	);
 
// Массив подсказок
 
	$hints = array(
 
	'h1' => 'На одно меньше, чем десять',
	'h2' => 'На одно больше, чем пять',
	'h3' => 'Без одного шесть',
	'h4' => 'Столько дней недели',
	'h5' => 'На одно больше, чем три'
 
	);
 
// Массив ответов
 
	$answers = array(
 
	'a1' => '9',
	'a2' => '6',
	'a3' => '5',
	'a4' => '7',
	'a5' => '4'
 
	);
 
	$_SESSION['hint'] = $hints['h'.$number];
	$_SESSION['answer'] = $answers['a'.$number];
	$_SESSION['question'] = $questions['q'.$number];
 
}
 
?>

2. Для формы теста Тьюринга во время регистрации, шаги редактирования ./register.php:

Найдите в начале файла:

if ($pun_config['o_regs_allow'] == '0')
{
		require_once PUN_ROOT.'header.php';
		message($lang_register['No new regs']);
}

Добавьте после:

// Подгрузим скрипт Simple Anti-Spam Redux и языковые файлы
require_once PUN_ROOT.'include/user/sas.php';
require_once PUN_ROOT.'lang/'.$pun_user['language'].'/sas.php';

Найдите:

		$language = $pun_config['o_default_lang'];

Добавьте после:

	if (isset ($_POST['spamcode']) && $_POST['spamcode'] != '' && strtolower($_POST['spamcode']) == strtolower($_SESSION['answer']))
	{
		session_unset();
		session_destroy();
	}
	else
	{
		session_unset();
		session_destroy();
		message($lang_sas['Spamcode failed']);
	}

Затем вставьте код формы в соответствующую часть кода файла:

			<div class="inform">
				<fieldset>
					<legend><?php echo $lang_sas['Anti-spam legend'] ?></legend>
					<div class="infldset">
						<label>
						<b><?php echo $lang_sas['Question'] ?></b> <?php echo $_SESSION['question']; ?> <input type="text" name="spamcode" size="10" maxlength="10"/><br/>
						<b><?php echo $lang_sas['Hint'] ?></b> <?php echo $_SESSION['hint']; ?>
						<br/></label>
					</div>
				</fieldset>
			</div>

3. Языковой файл (создайте ./lang/English/sas.php и ./lang/Russian/sas.php):

1
2
3
4
5
6
7
8
9
10
11
<?php
 
// Language definitions used in Simple Anti-Spam Redux modification
$lang_sas = array(
 
	'Anti-spam legend'		=>	'Spambot prevention question',
	'Question'			=>	'Question:',
	'Hint'				=>	'Hint:',
	'Spamcode failed'		=>	'The anti-spambot answer you supplied was incorrect. Please try again.'
 
);
1
2
3
4
5
6
7
8
9
10
11
<?php
 
// Языковые перменные, используемые в модификации Simple Anti-Spam Redux
$lang_sas = array(
 
	'Anti-spam legend'		=>	'Защита против автоматической регистрации',
	'Question'			=>	'Вопрос:',
	'Hint'				=>	'Подсказка:',
	'Spamcode failed'		=>	'Ответ на противоспамный вопрос, данный вами, был неверным. Пожалуйста, попробуйте ещё раз.'
 
);

0 Ответов to “Simple Anti-Spam Redux”


  • Нет комментариев

Оставьте комментарий




Bad Behavior has blocked 2641 access attempts in the last 7 days.