□投稿者/ R -(2004/02/14(Sat) 20:41:05)
| 最初の質問者ではありませんが、便乗で質問させて下さい。
> 1139行目に2796〜2832行目
> if($ico=~/.gif$/i){ #GIF
> :
> }
> までを挿入してそこにある $ico を $file に変更、
> if($IW >= 横幅 || $IH >= 縦幅){&er_("サイズが大きすぎます!");}
> でできると思います。
上記の修正を行ってみたところ、設定した値以上のファイルをアップしても
エラーチェックが働きません。
if($file=~/.gif$/i){ #GIF
open(GIF,"$i_dir/$file");
binmode(GIF);
seek(GIF,6,0);
read(GIF,$size,4);
close(GIF);
($IW,$IH)=unpack("vv",$size);
}elsif($file=~/.png$/i){ #PNG
open(PNG,"$i_dir/$file");
binmode(PNG);
seek(PNG,16,0);
read(PNG,$Pw,4);
read(PNG,$Ph,4);
close(PNG);
$PW=unpack("H*",$Pw);$IW=hex($PW);
$PH=unpack("H*",$Ph);$IH=hex($PH);
}elsif($file=~/.jpg$|.jpeg$/i){ #JPEG
open(JPG,"$i_dir/$file");
binmode(JPG);
read(JPG,$Top,2);
while (JPG) {
read(JPG,$Top,4);
($mark,$Cell,$Lar)=unpack("aan",$Top);
if($mark ne "\xFF"){$IW=0; $IH=0; last;}
elsif((ord($Cell) >= 0xC0) && (ord($Cell) <= 0xC3)){
read(JPG,$Top,5); ($IH, $IW)=unpack("xn2",$Top); last;
}else{read(JPG,$Top,($Lar-2));}
}
close(JPG);
}elsif($file=~/.bmp$/i){ #BMP
open(BMP,"$i_dir/$file");
binmode(BMP);
seek(BMP,18,0);
read(BMP,$size,8);
close(BMP);
($IW,$IH)=unpack("V2",$size);
}
if($IW >= 120 || $IH >= 160){&er_("サイズが大きすぎます!");}
}
とやってみたのですが、チェックが働いていないようなので、試しに
&er_("サイズが大きすぎます!");
だけを書いてみるとエラーが出ます(当然ですが・・)
なので上記の方法では $IW $IH に値が入っていないのでは?と思います。
残念ながら自分の技量ではここまでしかわかりません。
どうかご教授お願い致します。
|
|