|
|
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
|