6

アップロードするファイルを含むアップロード フォームがあります。私が抱えている問題は、ファイルがアップロードされていない場合でも、 if(isset($_FILES)) OR if(!empty($_FILES)) が成功として渡されることです:

$_FILES = $HTTP_POST_FILES;
if($_POST['type'] == 'photo' && isset($_FILES)){
// returns true even if no file is uploaded. What am I missing!
}
4

1 に答える 1

11

スーパーグローバルで$_FILESあるため、アップロードされたファイルが存在するかどうかに関係なく、おそらく常に設定されています。

予想されるファイルのアップロードを確認し、サイズ フィールドを確認します。(どうやらマニュアルの User Contributed Notes によると、フォームにアップロード要素が含まれている場合、isset($_FILES["my_file_name"])ファイルが選択されていなくても true を返す可能性があります。

これは確実に機能するはずです:

if($_POST['type'] == 'photo' && 
   ((isset($_FILES["my_file_name"]["size"]) && 
    ($_FILES["my_file_name"]["size"] > 0)) ){

( isset() は、「未定義のインデックス」通知を防ぐためのものです。)

ところで、あなたは何のためにこれをしますか?:

$_FILES = $HTTP_POST_FILES;
于 2010-03-30T22:04:12.150 に答える