PPKAPTCHA - капча для форума phpBB3

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.
Аватара пользователя
PPK
Администратор
Благодарил (а): 74 раза
Поблагодарили: 1571 раз
Сообщения: 9867
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

PPKAPTCHA - капча для форума phpBB3

16 мар 2011, 12:32

Пять лет назад для одного из phpBB2 форумов я сделал капчу :) , вариант этой капчи для форума phpBB3, скриншоты:
Опция в адм. разделе:

Предпросмотр капчи в адм. разделе:

Отображение капчи при регистрации пользователя, "простой" вариант:

"Сложный":



Смысл цифр и линий снизу следующий: нужно брать числа снизу начиная с наименьшего, смотреть по линии к какой из букв/цифр ведёт линия - указанное число или цифру всталять в форму подтверждения, это необходимо проделать для всех цифр снизу, цифры снизу, код подтверждения сверху и линии между ними меняются и располагаются случайным образом.


В phpmyadmin выполнить:

Код: Выделить всё

INSERT INTO `phpbb_config` (`config_name`, `config_value`, `is_dynamic`) VALUES ('ppkbb_ppkaptcha_type', '0', '0');
/includes/captcha/plugins/captcha_abstract.php после

Код: Выделить всё

$explain = $user->lang(($this->type != CONFIRM_POST) ? 'CONFIRM_EXPLAIN' : 'POST_CONFIRM_EXPLAIN', '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">', '</a>');
добавить

Код: Выделить всё

$config['ppkbb_ppkaptcha_type']==1 ? $user->lang['CONFIRM_CODE_EXPLAIN']=$user->lang['PPKAPTCHA_CONFIRM_CODE_EXPLAIN'] : '';//PPK CAPTCHA
/includes/captha/captcha_non_gd.php после

Код: Выделить всё

	function execute($code, $seed)
	{
добавить

Код: Выделить всё

global $phpbb_root_path, $config;//PPK CAPTCHA
после

Код: Выделить всё

unset($hold_chars);
добавить

Код: Выделить всё

//PPK CAPTCHA
		function_exists('imagecreatefrompng') ? '' :  $config['ppkbb_ppkaptcha_type']=0;
		if($config['ppkbb_ppkaptcha_type'])
		{
			$_png = $this->define_pk_pngs();
			if($config['ppkbb_ppkaptcha_type']==1)
			{
				$im  = imagecreate(100*$code_len, 200);
				$this->width=100*$code_len;
				$this->height=200;
			}
			else
			{
				$im  = imagecreate(100*$code_len, 120);
			}
			$gray50=imagecolorallocate($im, 50, 50, 50);
			$gray125=imagecolorallocate($im, 125, 125, 125);
			$white=imagecolorallocate($im, 255, 255, 255);
			imagefill($im, 0, 0, $white);

			$codes=preg_split('//', $code, -1, PREG_SPLIT_NO_EMPTY);

			$s_codes=$codes;
			if($config['ppkbb_ppkaptcha_type']==1)
			{
				shuffle($s_codes);
			}

			$a_codes=count($codes);

			for($i=0;$i<$a_codes;$i++)
			{
				$im2[$i]=imagecreatefrompng($phpbb_root_path.'images/symbols/'.$_png[$s_codes[$i]]);
				$i_width[$i]=imagesx($im2[$i]);
				$i_height[$i]=imagesy($im2[$i]);

				//default
				imagecopy($im, $im2[$i], mt_rand(100*$i, 100*$i+(100 - $i_width[$i])), mt_rand(0, 125 - $i_height[$i]), 0, 0, $i_width[$i], $i_height[$i]);

				imagedestroy($im2[$i]);
			}

			for($i=0;$i<200;$i+=2)
			{
				imageline($im, 0, $i, (100*$code_len), $i, $gray50);
			}

			for($i=0;$i<(100*$code_len);$i+=2)
			{
				imageline($im, $i, 0, $i, 200, $gray50);
			}

			if($config['ppkbb_ppkaptcha_type']==1)
			{
				$r_array=range(0, $code_len-1);
				shuffle($r_array);

				$q=$q_base=200;
				$lx=5;
				$q_step=26;
				$bd_pos=(100*$code_len)/2;
				$bd_shift=intval($code_len*$q_step/2)+(4*$code_len);
				$q=$q_base=$bd_pos-$bd_shift;

				for($i=0;$i<$a_codes;$i++)
				{
					$real_key=array_search($s_codes[$i], $codes);
					$shuffle_key[$real_key]=array_search($real_key, $r_array);

					imageline($im, $lx, 130, $lx+90, 130, $white);
					imageline($im, $lx, 130-10, $lx, 130, $white);
					imageline($im, $lx+90, 130-10, $lx+90, 130, $white);

					$q+=$q_step;

					imagefilledrectangle($im, $q, 170, $q+20, 190, $gray125);
					imagestring($im, 5, $q+7, 173, $r_array[$i]+1, $white);

					imageline($im, (100*$i+50), 130, $q_base+($q_step*($shuffle_key[$real_key]+1)+10), 170, $white);

					$lx+=100;

					unset($codes[$real_key]);
				}
				imagefilledrectangle($im, 3, 183, 51, 195, $gray125);
				imagestring($im, 1, 5, 186, 'PPKAPTCHA', $white);
			}

			header ("Content-type: image/png");
			header('Cache-control: no-cache, no-store');
			imagepng ($im);

			imagedestroy ($im);
		}
		else
		{
		//PPK CAPTCHA
после

Код: Выделить всё

echo $image;
добавить

Код: Выделить всё

		//PPK CAPTCHA
		}
		//PPK CAPTCHA
перед

Код: Выделить всё

	/**
	* png image data
	* Each 'data' element is base64_encoded uncompressed IDAT
	*/
добавить

Код: Выделить всё

//PPK CAPTCHA
	function define_pk_pngs()
	{
		$_png = array(
			'0' => '0.png',
			'1' => '1.png',
			'2' => '2.png',
			'3' => '3.png',
			'4' => '4.png',
			'5' => '5.png',
			'6' => '6.png',
			'7' => '7.png',
			'8' => '8.png',
			'9' => '9.png',
			'A' => 'A.png',
			'B' => 'B.png',
			'C' => 'C.png',
			'D' => 'D.png',
			'E' => 'E.png',
			'F' => 'F.png',
			'G' => 'G.png',
			'H' => 'H.png',
			'I' => 'I.png',
			'J' => 'J.png',
			'K' => 'K.png',
			'L' => 'L.png',
			'M' => 'M.png',
			'N' => 'N.png',
			'O' => 'O.png',
			'P' => 'P.png',
			'Q' => 'Q.png',
			'R' => 'R.png',
			'S' => 'S.png',
			'T' => 'T.png',
			'U' => 'U.png',
			'V' => 'V.png',
			'W' => 'W.png',
			'X' => 'X.png',
			'Y' => 'Y.png',
			'Z' => 'Z.png',
		);

		return $_png;
	}
	//PPK CAPTCHA
/includes/acp/acp_board.php перед

Код: Выделить всё

'legend2'				=> 'ACP_LOAD_SETTINGS',
добавить

Код: Выделить всё

						//PPK CAPTCHA
						'ppkbb_ppkaptcha_type'		=> array('lang' => 'PPKBB_PPKAPTCHA_TYPE',		'validate' => 'string',	'type' => 'text:1:1', 'explain' => true),
						//PPK CAPTCHA
/language/ru/common.php перед добавить

Код: Выделить всё

	//PPK CAPTCHA
	'PPKAPTCHA_CONFIRM_CODE_EXPLAIN'	=> 'Введите код в точности так, как вы его видите, в порядке определённом линиями и цифрами снизу. Регистр символов не имеет значения.',
	//PPK CAPTCHA
/language/ru/acp/board.php перед добавить

Код: Выделить всё

	//PPK CAPTCHA
	'PPKBB_PPKAPTCHA_TYPE' => 'Использовать PPKAPTCHA',
	'PPKBB_PPKAPTCHA_TYPE_EXPLAIN' => 'Если в опциях <em>Средства против спам-ботов</em> в качестве средства выбрана <em>Простая картинка</em> - использовать вариант PPKAPTCHA, 0 - не использовать, 1 - использовать сложный вариант, 2 - использовать простой вариант',
	//PPK CAPTCHA
/adm/style/captcha_default_acp_demo.html заменить

Код: Выделить всё

<dd><img src="{CONFIRM_IMAGE}" alt="{L_PREVIEW}" width="360" height="96" id="captcha_preview" /></dd>
на

Код: Выделить всё

<dd><img src="{CONFIRM_IMAGE}" alt="{L_PREVIEW}" id="captcha_preview" /></dd><!-- PPK CAPTCHA width="360" height="96" -->
images.zip
Скачать архив, распаковать, заменить файлы трекера файлами из архива.

Очистить кеш.

Идём в адм. раздел - вкладка Общие - Средства против спам-ботов - в поле Установленные модули: выбрать Простая картинка
Идём в адм. раздел - вкладка Общие - Функции конференции - Использовать PPKAPTCHA: устанавливаем опцию.

Символы букв и цифр в капче можно заменить на свои, директория /images/symbols/.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
TEK
Благодарил (а): 13 раз
Поблагодарили: 39 раз
Сообщения: 571
Зарегистрирован: 17 фев 2010, 21:23
Сообщение

Re: PPKAPTCHA - капча для форума phpBB3

16 мар 2011, 23:13

PPK писал(а):Отображение капчи при регистрации пользователя, "простой" вариант:
чето на скрине неувидел ни чисел ничего?? это типаничего не вписывать?? развод для ботов :D
КОГДА ТЫ РОДИЛСЯ!!! - ты плакал, а мир улыбался. Так проживи жизнь так, чтоб умирая ты улыбался, а мир плакал!!!
Аватара пользователя
zzipper
Благодарил (а): 12 раз
Поблагодарили: 10 раз
Сообщения: 427
Зарегистрирован: 20 окт 2009, 14:15
Сообщение

Re: PPKAPTCHA - капча для форума phpBB3

16 мар 2011, 23:46

Отчетливо вижу - 4EURN :)
bi
bizZz0n
Откуда: Украина, Харьков
Благодарил (а): 7 раз
Поблагодарили: 4 раза
Сообщения: 327
Зарегистрирован: 28 янв 2010, 00:58
Сообщение

Re: PPKAPTCHA - капча для форума phpBB3

18 мар 2011, 14:52

А в обновлении будет? :oops:
Аватара пользователя
PPK
Администратор
Благодарил (а): 74 раза
Поблагодарили: 1571 раз
Сообщения: 9867
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Re: PPKAPTCHA - капча для форума phpBB3

18 мар 2011, 20:19

Э-ммм.. не планировал .. :roll:
xo
xoxol77
Благодарил (а): 4 раза
Поблагодарили: 2 раза
Сообщения: 94
Зарегистрирован: 15 апр 2010, 15:50
Сообщение

Re: PPKAPTCHA - капча для форума phpBB3

20 апр 2011, 08:06

PPK писал(а):Э-ммм.. не планировал .. :roll:
имхо ты это зря ;)
bi
bizZz0n
Откуда: Украина, Харьков
Благодарил (а): 7 раз
Поблагодарили: 4 раза
Сообщения: 327
Зарегистрирован: 28 янв 2010, 00:58
Сообщение

Re: PPKAPTCHA - капча для форума phpBB3

20 апр 2011, 09:30

Пришлось перерисовать все буквы и цифры в более темный цвет, ибо не было видно серое на сером фоне, а где поменять фон, так и не нашел... Капча супер, это гениальная задумка, это не только анти бот, но и анти нуб, кто не поймет задумку капчи - фиг зарегается :claping:
Аватара пользователя
TEK
Благодарил (а): 13 раз
Поблагодарили: 39 раз
Сообщения: 571
Зарегистрирован: 17 фев 2010, 21:23
Сообщение

Re: PPKAPTCHA - капча для форума phpBB3

20 апр 2011, 13:58

bizZz0n писал(а):Пришлось перерисовать все буквы и цифры в более темный цвет, ибо не было видно серое на сером фоне, а где поменять фон, так и не нашел... Капча супер, это гениальная задумка, это не только анти бот, но и анти нуб, кто не поймет задумку капчи - фиг зарегается :claping:
Вот тут в самую точку. кто непоймет не зарегится, пришлось отключить и перейти на рекапчу. так как поступило масса писем на почту с жалобами что не могут вьехать что и как :lol:
КОГДА ТЫ РОДИЛСЯ!!! - ты плакал, а мир улыбался. Так проживи жизнь так, чтоб умирая ты улыбался, а мир плакал!!!
Аватара пользователя
9CaraTT
Благодарил (а): 230 раз
Поблагодарили: 228 раз
Сообщения: 3083
Зарегистрирован: 13 мар 2011, 15:23
Сообщение

PPKAPTCHA - капча для форума phpBB3

23 мар 2021, 08:39

Как поменять фон капчи? captcha_non_gd.php но не нашёл код отвечающий за фон
Делаю шаблоны, то что в наличии, под заказ, любого почти сайта, с TorrentPier движка, с DLE и.т.п, под ppkbb3cker. ICQ 560107181
Партнёрка для торрент трекеров: https://installs.pro/r/rutracker
Аватара пользователя
PPK
Администратор
Благодарил (а): 74 раза
Поблагодарили: 1571 раз
Сообщения: 9867
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

PPKAPTCHA - капча для форума phpBB3

23 мар 2021, 09:02

Менять в коде строки с imagecolorallocate, цвет в формате RGB

Вернуться в «Минимоды и хаки для phpBB3»