|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alexey Sedykh 2:5079/32.72 09 Jan 2001 14:17:18 To : All Subject : help -------------------------------------------------------------------------------- Имеется скpипт upload'а(см. ниже)... надо поставить запpет на заливание файлов, пpевышающих опpеделенный pазмеp! помогите плиз! ----------- #!/usr/local/bin/perl use locale; print "Content-type: text/html\n\n"; $imagedir="../www/images"; $content_type = $ENV{'CONTENT_TYPE'}; binmode STDIN; read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); if ((!$content_type) || ($content_type =~ m#^multipart/form-data#)){ ($boundary = $content_type) =~ s/^.*boundary=(.*)$/\1/; @pairs = split(/--$boundary/, $buffer); @pairs = splice(@pairs,1,$#pairs-1); for $part (@pairs) { ($dump,$fline,$value) = split(/\r\n/,$part,3); next if $fline =~ /filename=\"\"/; $fline =~ s/^Content-Disposition: form-data; //; (@columns) = split(/;\s+/, $fline); ($name = $columns[0]) =~ s/^name="([^"]+)"$/\1/g; if ($#columns > 0) { if ($value =~ /^Content-Type:/) { ($dump,$dump,$value) = split(/\r\n/,$value,3); } else {($dump,$value) = split(/\r\n/,$value,2);}} else {($dump,$value) = split(/\r\n/,$value,2); if (grep(/^$name$/, keys(%CGI))) { if (@{$FORM{$name}} > 0) { push(@{$FORM{$name}}, $value);} else { $arrvalue = $FORM{$name}; undef $FORM{$name}; $FORM{$name}[0] = $arrvalue; push(@{$FORM{$name}}, $value);}} else { next if $value =~ /^\s*$/; $FORM{$name} = $value;} next;} $FORM{$name} = $value;}} else{ @pairs2 = split(/&/, $buffer); foreach $pair2 (@pairs2) { ($name2, $value2) = split(/=/, $pair2); $value2 =~ tr/+/ /; $value2 =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value2 =~ s/<!--(.|\n)*-->//g; $input{$name2} = $value2; }} $base="../www/images/"; chdir($base); $upfile = $FORM{'upfile'}; $extension = $FORM{'extension'}; $discript = $FORM{'discript'}; $name = $FORM{'name'}; $email = $FORM{'email'}; if (length($upfile) < 5) { print "<font size=+3>A gde je fail?</font>"; print "<HTML>"; print "<HEAD>"; print "<META HTTP-EQUIV='refresh' CONTENT='2;URL=$ENV{HTTP_REFERER}'>"; print "</HEAD>"; print "</HTML>"; return false; } opendir(DIR,"/$imagedir"); @files=grep(/inf/,readdir(DIR)); closedir(DIR); $SIZE=@files; $kolvo=int $SIZE; $kolvo=$kolvo+1; # это(ниже) делается потомy что все каpтинки имеют имя файла види: 0010.jpg... # т.е. поpядковый номеp... if (length($kolvo)==1) { $upname="000$kolvo.$extension"; } if (length($kolvo)==2) { $upname="00$kolvo.$extension"; } if (length($kolvo)==3) { $upname="0$kolvo.$extension"; } if (length($kolvo)==4) { $upname="$kolvo.$extension"; } $filename = $upname; open(FILE, ">$filename"); binmode FILE; print FILE $upfile; close FILE; @path=split(/\./,$upname); $infname=$path[0]; $infname="$infname\.inf"; open(FILE,">$infname"); print FILE "$discript\n"; print FILE "$name\n"; print FILE "$email\n"; print FILE "0\n"; print FILE "$filename"; close(FILE); print "<HTML>"; print "<HEAD>"; print "<META HTTP-EQUIV='refresh' CONTENT='3;URL=http://localhost/index.html'>"; print "</HEAD>"; print "<BODY>"; print "<b>Thank you!</b>"; print "<BODY>"; print "</HTML>"; --------------- /*ДДДДДДДДДДДДДДДД*/ _Bye, all!_ /*ДДДДДДДД*/ --- CHAINIK v.3.14 * Origin: Раньше была мистика, а тепеpь статистика! (2:5079/32.72) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/160983a5b1092.html, оценка из 5, голосов 10
|