19.01.2025 - Генерация изображения со случайным кодом (captcha) Чаще всего изображения со случайным кодом (так называемая captcha) используются для защиты от флуда (автоматизированного ввода сообщений), некоторые сервисы находят им применнение в качестве раздражителя (для перехода на платный вариант). В общем, может пригодиться. PHP код следующий:
PHP - Код
$width = 100 ; //Ширина изображения
$height = 60 ; //Высота изображения
$font_size = 16 ; //Размер шрифта
$let_amount = 4 ; //Количество символов, которые нужно набрать
$fon_let_amount = 30 ; //Количество символов на фоне
$font = "fonts/cour.ttf" ; //Путь к шрифту
//набор символов
$letters = array( "a" , "b" , "c" , "d" , "e" , "f" , "g" );
//цвета
$colors = array( "90" , "110" , "130" , "150" , "170" , "190" , "210" );
$src = imagecreatetruecolor ( $width , $height ); //создаем изображение
$fon = imagecolorallocate ( $src , 255 , 255 , 255 ); //создаем фон
imagefill ( $src , 0 , 0 , $fon ); //заливаем изображение фоном
for( $i = 0 ; $i < $fon_let_amount ; $i ++) //добавляем на фон буковки
{
//случайный цвет
$color = imagecolorallocatealpha ( $src , rand ( 0 , 255 ), rand ( 0 , 255 ), rand ( 0 , 255 ), 100 );
//случайный символ
$letter = $letters [ rand ( 0 , sizeof ( $letters )- 1 )];
//случайный размер
$size = rand ( $font_size - 2 , $font_size + 2 );
imagettftext ( $src , $size , rand ( 0 , 45 ),
rand ( $width * 0.1 , $width - $width * 0.1 ),
rand ( $height * 0.2 , $height ), $color , $font , $letter );
}
for( $i = 0 ; $i < $let_amount ; $i ++) //то же самое для основных букв
{
$color = imagecolorallocatealpha ( $src , $colors [ rand ( 0 , sizeof ( $colors )- 1 )],
$colors [ rand ( 0 , sizeof ( $colors )- 1 )],
$colors [ rand ( 0 , sizeof ( $colors )- 1 )], rand ( 20 , 40 ));
$letter = $letters [ rand ( 0 , sizeof ( $letters )- 1 )];
$size = rand ( $font_size * 2 - 2 , $font_size * 2 + 2 );
$x = ( $i + 1 )* $font_size + rand ( 1 , 5 ); //даем каждому символу случайное смещение
$y = (( $height * 2 )/ 3 ) + rand ( 0 , 5 );
$cod [] = $letter ; //запоминаем код
imagettftext ( $src , $size , rand ( 0 , 15 ), $x , $y , $color , $font , $letter );
}
$cod = implode ( "" , $cod ); //переводим код в строку
header ( "Content-type: image/gif" ); //выводим готовую картинку
imagegif ( $src );
Это максимально упрощенный вариант с использованием только одного шрифта и небольшого количества символов и цветов, хотя и этого бывает достаточно, чтобы оградиться от незатейливых спамеров и флудеров.
Через HTML такое изображение вызывается стандартно:
Код <img src="sec_pic.php" alt="защитный код">
Скачать скрипт генерации защитного кода с полным набором символов и возможностью подключения своих шрифтов можно здесь [url=/uploads/files/public/secpic.rar]secpic.zip[/url] Опубликовано на сайте: http://www.coders-library.ru Прямая ссылка: http://www.coders-library.ru/index.php?name=news&op=view&id=374