Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Генератор картинок
 
 автор: Panker   (10.03.2006 в 10:49)   письмо автору
 
 

Взято из рассылки: Все о PHP и даже больше

Написание данного скрипта (найденный на одном известном форуме) принадлежит юзеру под ником Bred Vilchec привожу код и описание ниже:
В целях повышения опыта и изучения возможностей gd и бал написан сабж.
Пришлось провести маленькое исследование соотношения читабельности к сложности расшифровки
таких картинок на нескольких популярных сайтах. В одних, например chat.ru OCR-ивание
не составит особого труда, в других, типа www.e-gold.com, цифры иногда не может распознать и
сам пользователь. Самой лучшей системой имхо оказалась система регистрации на ramblere,
http://mail.rambler.ru/new_user.html, по её образу и подобию я и написал сабж.
Скрипт выводит заданное число цифр в изображении заданных размеров.
Случайные параметры:
1. Размер цифры
2. Местоположение цифры (порядок цифр сохраняется)
3. TTF-шрифт, которым напечатана цифра, случайный из заданного списка
4. Угол наклона цифры относительно горизонтали
5. Зашумленность точками и линиями
Все настройки можно изменять, смотрите в исходниках, отмечу что
для того чтобы убрать зашумление линиями и/или точками нужно установить соответствующие
параметры в ноль. Не думаю, что следует устанавливать процент зашумленности более 10,
читабельность от этого очень страдает, то же самое и с максимальным числом зашумляющих линий.
Для работы скрипта нужно скопировать несколько(или один) TTF-шрифтов
(копируются из "C:\Windows\Fonts")в папку со скриптом, изменив соответствующие записи в скрипте.
Само число, показанное на картинке заносится в переменную $number.

<?php 

$img_x          
= 80;   //Ширина изображения, по умолчанию-100 
$img_y          = 26;   //Высота изображения, по умолчанию-30 
$num_n          = 5;    //Число цифр, default-4 
$font_min_size  = 12;   //Минимальный размер шрифта, по умолчанию-12 
$lines_n_max    = 1;    //Максимальное число шумовых линий, по умолчанию-2 
$nois_percent   = 4;    //Зашумленность цветами фона и текста, в процентах, по умолчанию-3 
$angle_max      = 18;   //Максимальный угол отклонения от горизонтали по часовой стрелке и против, по умолчанию-20 

$font_arr=glob(dirname(__FILE__)."/fonts/*.ttf"); 

$im=imagecreate($img_x, $img_y); 
//создаем необходимые цвета 
$text_color = imagecolorallocate($im, 0, 0, 0);       //цвет текста 
$nois_color = imagecolorallocate($im, 0, 0, 0);       //цвет зашумляющих точек и линий 
$img_color  = imagecolorallocate($im, 255, 255, 255); //цвет фона 
//заливаем изображение фоновым цветом 
imagefill($im, 0, 0, $img_color); 
//В переменной $number будет храниться число, показанное на изображении 
$number=''; 

for (
$n=0; $n<$num_n; $n++){ 
    
$num=rand(0,9); 
    
$number.=$num; 
    
$font_size=rand($font_min_size, $img_y/2); 
    
$angle=rand(360-$angle_max,360+$angle_max); 

    
$font_cur=rand(0,count($font_arr)-1); 
    
$font_cur=$font_arr[$font_cur]; 
    
//вычисление координат для каждой цифры, формулы обеспечивают нормальное расположние 
    //при любых значениях размеров цифры и изображения 
    
$y=rand(($img_y-$font_size)/4+$font_size, ($img_y-$font_size)/2+$font_size); 

    
$x=rand(($img_x/$num_n-$font_size)/2, $img_x/$num_n-$font_size)+$n*$img_x/$num_n; 

    
imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_cur, $num); 
}; 
//Вычисляем число "зашумленных" пикселов 
$nois_n_pix=round($img_x*$img_y*$nois_percent/100); 
//зашумляем изображение пикселами цвета текста 
for ($n=0; $n<$nois_n_pix; $n++){ 
    
$x=rand(0, $img_x); 
    
$y=rand(0, $img_y); 
    
imagesetpixel($im, $x, $y, $nois_color); 
}; 
//зашумляем изображение пикселами фонового цвета 
for ($n=0; $n<$nois_n_pix; $n++){ 
    
$x=rand(0, $img_x); 
    
$y=rand(0, $img_y); 
    
imagesetpixel($im, $x, $y, $img_color); 
}; 

$lines_n=rand(0,$lines_n_max); 
//проводим "зашумляющие" линии цвета текста 
for ($n=0; $n<$lines_n; $n++){ 
    
$x1=rand(0, $img_x); 
    
$y1=rand(0, $img_y); 
    
$x2=rand(0, $img_x); 
    
$y2=rand(0, $img_y); 
    
imageline($im, $x1, $y1, $x2, $y2, $nois_color); 
}; 

Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT"); 
Header("Cache-Control: no-cache, must-revalidate"); 
Header("Pragma: no-cache"); 

header("Content-type: image/png"); 
imagepng($im); 
imagedestroy($im); 

//В переменной $number хранится число, показанное на изображении 

?>

мне понравилось!
я ставлю картинку так <img src=<? echo "$number"; ?>> вроде на свойства нажимаеш разные кртинки поевляются да тчонее написаны в свойствах картинки! но сама картинка не отоброжается :( поЧАму :(

   
 
 автор: Artemy   (10.03.2006 в 11:03)   письмо автору
 
   для: Panker   (10.03.2006 в 10:49)
 

Туда надо ставить путь к этому скрипту, и гетом указывать это число, а в этом скрипте принемать это число.

   
 
 автор: Panker   (10.03.2006 в 11:04)   письмо автору
 
   для: Artemy   (10.03.2006 в 11:03)
 

А можно подробно :) а то нечего не понел :)

   
 
 автор: Artemy   (10.03.2006 в 11:20)   письмо автору
 
   для: Panker   (10.03.2006 в 11:04)
 

<img src="суда прописать путь к этому скрипту.php?number=а суда написать число которое нужно сгенерить"> 
<?PHP
 
//Далее это строку меняем
 
$number='';
 
//на эту
 
$number=$HTTP_GET_VARS['number'];  
?>

   
 
 автор: Panker   (10.03.2006 в 11:50)   письмо автору
 
   для: Artemy   (10.03.2006 в 11:20)
 

немагу понятЬ! картинку ладно я вставил! а как мне сравнить картинку с введённым числом! типа я в форме ввожу число на картинки мне пишит
Гууд если не првельно пишит БАД!
я не магу так почему то сделатЬ! я непонимаю как переменыне сравнить если инклуд делать то как то не так а как по другому ? :(

   
 
 автор: Artemy   (10.03.2006 в 12:11)   письмо автору
 
   для: Panker   (10.03.2006 в 11:50)
 

Тогда, Вам нужно придумать свою логику процесса защиты.
Цель такова: запомнить секретное число, потом сранить введеное с этим.

   
 
 автор: cheops   (10.03.2006 в 12:06)   письмо автору
 
   для: Panker   (10.03.2006 в 10:49)
 

Приведу тему по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=10038

   
 
 автор: Panker   (10.03.2006 в 12:10)   письмо автору
 
   для: cheops   (10.03.2006 в 12:06)
 

я там уже был :)
а библиотеку качать 5 метра :) ух ужас!
1 пока скачаеш!
2 скачаеш и с 4 метрами труднее разобратся чем с 20 стрчкми :(
или вы что то другое имели ввиду

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования