Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Рисование.


Автор: r 10.4.2005, 23:08
Привет Всем кто не спит. Такая вот проблема на некоторых страницах регистрации выводится графическая картинка с набором всяких символов, так сказать защита от автоматической регистрации, ну я такую-же хочу написать, только вот от природы я туповат, никак не соображу как люди так делают. Картинку-то я нарисовал и цифры даже вставил, потом сохранил в файл, только теперь ни одна программа не может энтот файл просмотреть, и потом мне ведь его потом в форму-бы вставить. Вот такие дела, если кто встречался с этим поможите а то сами мы не местные и не разумеем...

Автор: korob2001 11.4.2005, 03:21
Просто генерь случайное число или строку или не случайную, а потом прописывай его или её в графический файл, при этом запоминая эту же строку в переменной и запрашивай у юзверя это чило. Если число или строка введена верно, то даёшь челу доступ, если нет, то просто генеришь ошибку.
Думаю принцип понятен.

Автор: r 11.4.2005, 20:19
Да принцип-то я понял давно вот код из-за которого не получается вставка картинки в форму(файл не читается):
Код

#!C:\perl\bin\perl -w
use strict;
use CGI;
use CGI::Carp 'fatalsToBrowser';
 my $cgi = new CGI;
 use GD;
my $number=238756; //Тут сгенерю число.
   my  $im = new GD::Image(90,20);
  my  $white = $im->colorAllocate(255,255,255);
   my  $black = $im->colorAllocate(0,0,0);       
   my  $red = $im->colorAllocate(255,0,0);      
   my $blue = $im->colorAllocate(0,150,255);
     $im->transparent($white);
     $im->interlaced('true');
     $im->fill(50,50, $blue);
     $im->string(gdGiantFont,15,4,$number,$white);
    binmode STDOUT;
    open(PNG,'>../www/cifra.png')|| die "ERORR!!!\n";
    print $cgi->header( -charset => 'Windows-1251' );
    print PNG $im->png;
     print $im->png;
     close(PNG);

Попробуй открыть энтот файл как нибудь. smile

Автор: Phoinix 12.4.2005, 15:26
Зачем тебе, собственно, CGI, если ты выводишь им только заголовок, причем неправильный...

print $cgi->header( -charset => 'Windows-1251' );

замени на

print "Content-type: image/png\n\n";

и будет тебе счастье...

Это во первых, а во вторых для вставки текста в изображение проще использовать http://search.cpan.org/~mverb/GDTextUtil-0.86/Text.pm

Автор: r 13.4.2005, 19:53
Цитата(Phoinix @ 12.4.2005, 15:26)
Зачем тебе, собственно, CGI, если ты выводишь им только заголовок, причем неправильный...

print $cgi->header( -charset => 'Windows-1251' );

замени на

print "Content-type: image/png\n\n";

и будет тебе счастье...

Это во первых, а во вторых для вставки текста в изображение проще использовать http://search.cpan.org/~mverb/GDTextUtil-0.86/Text.pm

<b>Phoinix</b>, ты неправильно понял, CGI мне нужен, я использую его по всему скрипту, и в нем уже около шестисот строк, этот кусочек кода, я так, набросал как пример. Второе, так как ты предложил выводить заголовок, почему-то не получается. Ну и в третьих если ты видел я сохранил в файл картинку, ведь мне нужно будет потом эту картинку вставить в форму, а не просто вывести отдельно. Так вот закавыка в том что картинки не видно в форме. Видно рамку а самой картинки не видно, причём этот файл я даже не могу открыть другими програмами. Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)