プロが教える店舗&オフィスのセキュリティ対策術

ファイルをアップロードさせる事に成功しましたが、
不正処理を防ぐ為、制限させたいのですが、
処理方法が分かりません。

(1)
JPGファイルのみに制限する事

(2)
100KB以下に制限する事

(3)
ファイルが未入力の場合、
ファイルパスが存在しない場合、
拒否する=>exitする。

(4)
0バイトなど壊れていたら、拒否する=>exitする。


どんなIF文があるでしょうか?

A 回答 (1件)


#$_FILES['keyname']['type']を調べる。
if(preg_match("#^image/p?jpeg$#i",$_FILES['keyname']['type'])){
echo "JPGファイルのみアップロードが可能です";
exit;
}


#$_FILES['keyname']['size']を調べる
if($_FILES['keyname']['size'] > 102400){
echo "100KB以上のファイルは使えません。";
exit;
}


#$_FILES['keyname']['error']を調べる
if($_FILES['keyname']['error'] == 4){
echo "ファイルが未入力です。";
exit;
}


#$_FILES['keyname']['error']を調べる
if($_FILES['keyname']['error'] == 3){
echo "ファイルが正常にアップロードできませんでした。";
exit;
}

こんな感じでしょうか。
詳しくはPHPマニュアルのファイルアップロードの処理のページを参考にしてみてください。

参考URL:http://php.planetmirror.com/manual/ja/features.f …

この回答への補足

0バイト、未入力、100キロバイト制限は、
何とか他の方法でできましたが、

頂いた方法ではうまくいきませんでした。
JPEG形式なのかどうなのか、ファイルタイプを取り出す方法が分かればいいんですが、

$_FILES['keyname']['type'] では、
ファイル形式が取り出せないですね。
他の良く似た方法でも、 file という種類で取り出したり。
JPGでもtxtでも、file・・・って出ました。

補足日時:2005/11/15 15:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!