• 締切済み

ファイルのアップロードで、

ファイルをアップロードさせる事に成功しましたが、 不正処理を防ぐ為、制限させたいのですが、 処理方法が分かりません。 (1) JPGファイルのみに制限する事 (2) 100KB以下に制限する事 (3) ファイルが未入力の場合、 ファイルパスが存在しない場合、 拒否する=>exitする。 (4) 0バイトなど壊れていたら、拒否する=>exitする。 どんなIF文があるでしょうか?

みんなの回答

回答No.1

1 #$_FILES['keyname']['type']を調べる。 if(preg_match("#^image/p?jpeg$#i",$_FILES['keyname']['type'])){ echo "JPGファイルのみアップロードが可能です"; exit; } 2 #$_FILES['keyname']['size']を調べる if($_FILES['keyname']['size'] > 102400){ echo "100KB以上のファイルは使えません。"; exit; } 3 #$_FILES['keyname']['error']を調べる if($_FILES['keyname']['error'] == 4){ echo "ファイルが未入力です。"; exit; } 4 #$_FILES['keyname']['error']を調べる if($_FILES['keyname']['error'] == 3){ echo "ファイルが正常にアップロードできませんでした。"; exit; } こんな感じでしょうか。 詳しくはPHPマニュアルのファイルアップロードの処理のページを参考にしてみてください。

参考URL:
http://php.planetmirror.com/manual/ja/features.file-upload.php
CANALVOR
質問者

補足

0バイト、未入力、100キロバイト制限は、 何とか他の方法でできましたが、 頂いた方法ではうまくいきませんでした。 JPEG形式なのかどうなのか、ファイルタイプを取り出す方法が分かればいいんですが、 $_FILES['keyname']['type'] では、 ファイル形式が取り出せないですね。 他の良く似た方法でも、 file という種類で取り出したり。 JPGでもtxtでも、file・・・って出ました。