Меняем картинку с защитным кодом.

Vladiger

С-Модер
LV
0
 
Картинка с защитным кодом при регистрации, в PHP Fusion 6.01.6 слижком простая.
Данный код позволит сделать эту катринку более интересной.
Например такой:
You must be registered for see images attach

Или такой:
You must be registered for see images attach



<b>Порядок установки:</b>

1. Открываем maincore.php
2. Находим строчку
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->// Create Validation image if $vimage is set and die();<!--c2--></div><!--ec2-->
3. Ниже заменяем существующий код до строчки <!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->// Fetch the Site Settings from the database and store them in the $settings variable<!--c2--></div><!--ec2-->следующим кодом: <!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->if (isset($vimage)) {
&nbsp;&nbsp;&nbsp;&nbsp;$check_url = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $_SERVER['SCRIPT_NAME']);
&nbsp;&nbsp;&nbsp;&nbsp;if (eregi("register.php", $check_url) && preg_match("/^[0-9a-z]{32}$/", $vimage)) {
 $vres = dbquery("SELECT * FROM ".$db_prefix."vcode WHERE vcode_2='$vimage'");
 if (dbrows($vres)) {
 &nbsp;&nbsp;&nbsp;&nbsp;$vdata = dbarray($vres);
 &nbsp;&nbsp;&nbsp;&nbsp;$text = $vdata['vcode_1'];
 &nbsp;&nbsp;&nbsp;&nbsp;$im=imagecreatetruecolor(220, 50);
 &nbsp;&nbsp;&nbsp;&nbsp;$color_arr = array("low" => "0", "high" => "255");
 &nbsp;&nbsp;&nbsp;&nbsp;imagefill($im, 0, 0, imagecolorallocate($im, 255, 255, 255));
 &nbsp;&nbsp;&nbsp;&nbsp;if (file_exists("images/validate_bg.jpg")) {
   $bg = imagecreatefromjpeg("images/validate_bg.jpg");
   imagecopyresized ($im, $bg, 0, 0, 0, 0, 220, 50, imagesx($bg), imagesy($bg));
 &nbsp;&nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;&nbsp;for ($i=0; $i<5; $i++) imageline($im, 0, $i*10+2, 220, $i*10+10, imagecolorallocate($im, 128, 128, 128));
 &nbsp;&nbsp;&nbsp;&nbsp;for ($i=0; $i<10; $i++) imageline($im, $i*40+10, 0, $i*40+5, 50, imagecolorallocate($im, 128, 128, 128));
 &nbsp;&nbsp;&nbsp;&nbsp;for ($i=0; $i<strlen($text); $i++) { $a = rand(-25, 25); imagettftext($im, 22, $a, ($i*40)+15, 38+($a/8), imagecolorallocate($im, rand($color_arr['low'], $color_arr['high']), rand($color_arr['low'], $color_arr['high']), rand($color_arr['low'], $color_arr['high'])), 'images/font.ttf', $text{$i}); }
 &nbsp;&nbsp;&nbsp;&nbsp;for ($i=0; $i<rand(2000, 4000); $i++) { imagesetpixel($im, rand(0, 220), rand(0, 50), imagecolorallocate($im, 86, 91, 102)); }
 &nbsp;&nbsp;&nbsp;&nbsp;for ($i=0; $i<rand(1000, 3000); $i++) { imagesetpixel($im, rand(0, 220), rand(0, 50), imagecolorallocate($im, rand($color_arr['low'], $color_arr['high']), rand($color_arr['low'], $color_arr['high']), rand($color_arr['low'], $color_arr['high']))); }
 &nbsp;&nbsp;&nbsp;&nbsp;header("Content-type: image/jpeg");
 &nbsp;&nbsp;&nbsp;&nbsp;imagejpeg($im);
 &nbsp;&nbsp;&nbsp;&nbsp;imagedestroy($im);
 }
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;die();
&nbsp;&nbsp;&nbsp;&nbsp;break;
}<!--c2--></div><!--ec2-->
4. Помещаем в каталог <b>images</b> файл с ttf фонтом, которым будут прорисовываться символы. Можно выбрать любой понравившийся вам фонт из дирректории <b>C:\WINDOWS\Fonts</b> на вашем компьютере. Я выбрал Xirod.ttf. Загружаем его на сервер в каталог <b>images</b> и переименовываем в <b>font.ttf</b>

<b>Установка завершена.</b>
Дополнительная информация по настройке данного програмного кода:
В строчке <!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->$color_arr = array("low" => "0", "high" => "255");<!--c2--></div><!--ec2--> задается диапазон цветовой палитры для отображаемых символов. Цвета символов генерируются случайно из заданного диапазона. Это требуется если вы используете светлый или темный скин. Этим диапазоном можно подкорректировать гамму цветов символов если задать диапазон 128 - 255 более приемлемо для темного скина, 0 - 128 для светлого. Для светлого скина диапазон 0 - 255 можно оставить без изменения.
Фон <b>background</b> выбирается из стандартной картинки validate_bg.jpg размещенной в каталоге <b>images</b>. Вы можете заменить картинку любым изображением, с любыми размерами, которое будет являться фоном картинки с кодом. Следует помнить что картинка validate_bg.jpg будет сжата или растянута до размеров 220 x 50 точек, не зависимо от ее реальных размеров.
Если вы не хотите использовать в качестве background картинку, можете удалить из каталога images файл validate_bg.jpg. В этом случае, цвет background можно изменить в строчке <!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->imagefill($im, 0, 0, imagecolorallocate($im, 255, 255, 255));<!--c2--></div><!--ec2--> Как видно в конце строки атрибуты каналов RGB для цвета, которым будет залит background.
 
<b>Человек сказали спасибо:</b> 1
<a href="http://forum.pronets.ru/index.php?showuser=1" target="_blank"><span style='color:#829BB8'>•$EGUR@•</span></a>
 
Прикольно... будет время попробую :)

а кстати.. очень нужна подобная фитча для ТОПа
Можешь замутить её туда?
 
<!--quoteo(post=54638:date=18.03.2007, 16:38:name=•$EGUR@•)--><div class='quotetop'>Цитата(•$EGUR@• @ 18.03.2007, 16:38) [snapback]54638[/snapback]</div><div class='quotemain'><!--quotec-->а кстати.. очень нужна подобная фитча для ТОПа
Можешь замутить её туда?<!--QuoteEnd--></div><!--QuoteEEnd-->

Дык а зачем ее мутить в Invision Power Board. В IPB своя капча прекрасная, просто использовать классы ядра IPB и все.
Например функция которая выводит картинку с кодом в IPB выглядит примерно так:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->$ipsclass->show_gd_img('CAPCHA');<!--c2--></div><!--ec2-->Где CAPCHA - это то что будет на картинке вместо кода.

Небольшой но интересный эксперимент:
Создаем в корневой дирректории IPB экспериментальный файл <b>capcha.php</b> с таким содержанием:<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--><?php

define('IPB_THIS_SCRIPT', 'public');
define('IPB_LOAD_SQL'&nbsp;&nbsp; , 'queries');
require_once "init.php";
require_once ROOT_PATH."conf_global.php";
require_once ROOT_PATH."sources/ipsclass.php";

$ipsclass = new ipsclass();
$ipsclass->vars = $INFO;
$ipsclass->init_db_connection();
$ipsclass->init_load_cache( array_merge('settings') );
$ipsclass->parse_incoming();
$ipsclass->show_gd_img($ipsclass->input['code'] ? $ipsclass->input['code'] : 'EMPTY');

?><!--c2--></div><!--ec2-->

Далее заходим в <b>Админцентр -> Внешний вид -> Простая смена логотипа</b>
В поле <b>Ссылка к логотипу</b> вводим следущюю строчку
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->{$this->ipsclass->vars['board_url']}/capcha.php?code=SEQURA<!--c2--></div><!--ec2-->
Сохраняем логотип, заходим на форум и радуемся прикольной картинке вместо логотипа, с надписью SEGURA.

То есть саму картинку не нужно програмировать, она уже есть в классах IPB.
А вот насчет ТОПа - Давай в другом разделе обсудим. Я чет пока не понял задачи, что нужно делать этой картинкой? и где?

А то ОФФТОП пошел уже... :unsure:
 
Сверху