Магазин
Правила Ответы на вопросы Конфиденциальность
Магазин
Правила Ответы на вопросы Конфиденциальность
  • Быстрые действия Ярлыки
    Общие действия
    Связаться с администрацией
    • Бот

       

Минимоды и хаки для phpBB3

  • Список форумов
  • Форумы по phpBB 3.0
  • Другие моды для phpBB 3.0
  • Минимоды и хаки для phpBB3

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

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.

12 сообщений
  • 1
  • 2
  • След.
Просмотры: 4490 • 
  • Аватара пользователя
    PPK Сообщение 16.03.2011
    Пять лет назад для одного из 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/.
    У вас нет необходимых прав для просмотра вложений в этом сообщении. Попробуйте зарегистрироваться или войти на форум.
PPK
  • Аватара пользователя
    TEK Сообщение 16.03.2011
    PPK писал(а):Отображение капчи при регистрации пользователя, "простой" вариант:
    чето на скрине неувидел ни чисел ничего?? это типаничего не вписывать?? развод для ботов :D
    КОГДА ТЫ РОДИЛСЯ!!! - ты плакал, а мир улыбался. Так проживи жизнь так, чтоб умирая ты улыбался, а мир плакал!!!
TEK
  • Аватара пользователя
    zzipper Сообщение 16.03.2011
    Отчетливо вижу - 4EURN :)
zzipper
  • bizZz0n Сообщение 18.03.2011
    А в обновлении будет? :oops:
bizZz0n
  • Аватара пользователя
    PPK Сообщение 18.03.2011
    Э-ммм.. не планировал .. :roll:
PPK
  • xoxol77 Сообщение 20.04.2011
    PPK писал(а):Э-ммм.. не планировал .. :roll:
    имхо ты это зря ;)
xoxol77
  • bizZz0n Сообщение 20.04.2011
    Пришлось перерисовать все буквы и цифры в более темный цвет, ибо не было видно серое на сером фоне, а где поменять фон, так и не нашел... Капча супер, это гениальная задумка, это не только анти бот, но и анти нуб, кто не поймет задумку капчи - фиг зарегается :claping:
bizZz0n
  • Аватара пользователя
    TEK Сообщение 20.04.2011
    bizZz0n писал(а):Пришлось перерисовать все буквы и цифры в более темный цвет, ибо не было видно серое на сером фоне, а где поменять фон, так и не нашел... Капча супер, это гениальная задумка, это не только анти бот, но и анти нуб, кто не поймет задумку капчи - фиг зарегается :claping:
    Вот тут в самую точку. кто непоймет не зарегится, пришлось отключить и перейти на рекапчу. так как поступило масса писем на почту с жалобами что не могут вьехать что и как :lol:
    КОГДА ТЫ РОДИЛСЯ!!! - ты плакал, а мир улыбался. Так проживи жизнь так, чтоб умирая ты улыбался, а мир плакал!!!
TEK
  • Аватара пользователя
    9CaraTT Сообщение 23.03.2021
    Как поменять фон капчи? captcha_non_gd.php но не нашёл код отвечающий за фон
    Делаю стили шаблоны для трекера/форума.
9CaraTT
  • Аватара пользователя
    PPK Сообщение 23.03.2021
    Менять в коде строки с imagecolorallocate, цвет в формате RGB
PPK
12 сообщений
  • 1
  • 2
  • След.

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

Time: 0.000s | Queries: 0 | Peak Memory Usage: 0.00 МБ | GZIP: Unknown | SQL Explain
  • Список форумов
2018, made with by ThemeKita Создано на основе phpBB® Forum Software © phpBB Limited Русская поддержка phpBB (C) 2009-2026 @ PPK
  • Часовой пояс: UTC+04:00
Участники темы
Список форумов Участники темы
Перейти
Сайт ↳   Новости по сайту ↳   Новости обновлений ↳   Вопросы по сайту ↳   Non-russian speakers forum Форумы по phpBB 3.1-3.3 ↳   Расширения для phpBB 3.1-3.3 ↳   Бета-версии и расширения в разработке ↳   База расширений ↳   Поиск и запросы расширений ↳   Расширения для phpBB 3.1-3.3 для донаторов ↳   Условно-бесплатные расширения ↳   Платные расширения ↳   Расширения для подписчиков ↳   Запросы расширений, функционала и переводов для подписчиков ↳   Переводы расширений для phpBB3.1-3.3 ↳   Стили для phpBB 3.1-3.3 ↳   Вопросы по phpBB 3.1-3.3 Форумы по phpBB 3.0 ↳   Мод трекера ppkBB3cker ↳   Новости по трекеру и обновлениям ↳   Ошибки, проблемы, недочёты ↳   Предложения по новым функциям и возможностям ↳   Вопросы, ответы и примеры решений ↳   Моды и стили для трекера ↳   Готовые стили для трекера ↳   Запросы стилей для трекера ↳   Стили в разработке ↳   Готовые моды для трекера ↳   Запросы модов для трекера ↳   Моды в разработке ↳   Остальное ↳   Часто задаваемые вопросы ↳   Ваши трекеры ↳   Мод трекера xbtBB3cker ↳   Новости по трекеру и обновлениям ↳   Вопросы, ответы, ошибки и обсуждение ↳   Другие моды для phpBB 3.0 ↳   Минимоды и хаки для phpBB3 ↳   phpBB 3.0 ppkBB3cker Edition ↳   Платные услуги, моды, стили для phpBB 3.0 ↳   BB2Spoiler/BB3Spoiler ↳   BB3Topics ↳   BB3Sape ↳   BB3UserAgentInfo ↳   Вопросы по phpBB 3.0 ↳   Вне тематики форума