PERL - статьи


Генерация ответа - часть 4


то гарантировано расчитывать вы можете только на Название/Версия).

Ну вот я слишком много развел демагогии,пора переходить к практическим примерам.

Допустим ваш скрипт генерирует какие-то тэги,которые слишком старые браузеры не поддерживают,причем без них не обойдешся,они составляют всю 'изюминку' сайта.

#!/usr/bin/perl #oldbrowser.cgi print "Content-Type: text/html\n\n"; if(defined ($ENV{'HTTP_USER_AGENT'})){ $browser=$ENV{'HTTP_USER_AGENT'}; ($vers)=($browser=~/\/(\d+\.\d+)/); if(($browser=~/mozilla/i)&&($vers

Ну уже почувствовали,насколько это здорово.А вот еще примерчик.Это из разряда того, что тэги бывают разные.Например в Explorer есть тэг BGSOUND предназначеный для проигрывания музыки на страничке.(В Netscape этого тега нет,и поэтому для втыкания музыки приходится использовать подключаемые модули plugin).Мутится с этими Плугинами Вам в облом,а хочется побаловать человека хорошей музыкой,если браузер позволяет.

... ... if($ENV{'HTTP_USER_AGENT'}=~/msie/i){ print "<BGSOUND src=\"jmj00.mid\">"; } elsif($ENV{'HTTP_USER_AGENT'}=~/mozilla/i){ #Оставлю сдесь коментарий,что воткну что-нибудь типа музыки,для Netscap'а , #Когда мне не будет так в облом это делать....... }

Ну вот вы уже можете управлять этим процессом.Только не забывайте,что если вы не получили информацию о клиенте(так может быть,если например ваш скрипт вызвал какая-нибудь поисковая машина) то не в этом случае не надо делать никаких предположений,а просто пусть ваш скрипт продолжает делать то что должен был делать.

Как всегда Примерчик на последок.Этот примерчик позволит выбирать из списка файлов. и загружать что пользователь хочет.

#!/usr/bin/perl #download.cgi

sub urldecode{ local($val)=@_; $val=~s/\+/ /g; $val=~s/%([0-9A-H]{2})/pack('C',hex($1))/ge; return $val; } @Filelist=qw(index.html readme.txt jmj00.mid gunshot.wav foto.gif); @Sel_list=(); if($ENV{'REQUEST_METHOD'} eq 'GET'){$query=$ENV{'QUERY_STRING'};} elsif($ENV{'REQUEST_METHOD'} eq 'POST'){sysread(STDIN,$query,$ENV{'CONTENT_LENGTH'});} if($query eq ''){ #Если никаких данных не подано на обработку,то сгенерируем форму, #которую и предложим заполнить пользователю. print "Content-Type: text/html\n\n"; print "<HTML><HEAD><TITLE>File Downloading</TITLE></HEAD>"; print "<BODY bgcolor=\"white\">"; print "Выберите файлы которые вы хотите загрузить:<BR>"; print "<FORM METHOD=\"POST\">"; print "<SELECT NAME=\"file\" size=4 multiple>"; foreach(@Filelist){ print "<OPTION value=\"$_\">$_"; } print "</SELECT><BR>"; print "<INPUT TYPE=\"Submit\" value=\"Download!\">"; print "</FORM>"; print "</BODY></HTML>" } else{ @formfields=split /&/,$query; foreach(@formfields){ if(/^file=(.*)/){push(@Sel_list,urldecode($1));} } unless(@Sel_list){ print "Content-Type: text/html\n\n"; print "<HTML><BODY><CENTER><H1>Вы должны выбрать что-то из списка"; print "</H1></CENTER></BODY></HTML>"; } else{ print "Content-Type: multipart/mixed;boundary=\"bhy3e23r4t34tnehtpo7678nneu4232y213vdg\"\n\n"; print "--bhy3e23r4t34tnehtpo7678nneu4232y213vdg\n"; foreach(@Sel_list){ print "Content-Type: application/x-qwerty; name=\"$_\"\n\n"; open F,"$_"; print <F>; close F; print "\n--bhy3e23r4t34tnehtpo7678nneu4232y213vdg\n"; } print "Content-Type: text/html\n\n"; print "<HTML><H1>Thats all folks!</H1></HTML>"; print "\n--bhy3e23r4t34tnehtpo7678nneu4232y213vdg--\n"; } }




- Начало -  - Назад -  - Вперед -



Книжный магазин