1

ユーザーが公開プロフィールを編集して、その過程で写真をアップロードできるフォームがあります。ユーザーが写真をアップロードした場合、または写真を変更しないために空白のままにした場合を除いて、すべて正常に機能します。それでも、写真をアップロードしようとして、空の場合はエラーがスローされます...チェックはありますが、ただそれを無視します。

if(isset($_FILES['userfile']))
    {
        $file_name = $this->session->userdata('user_id');
        $img = $this->custom_lib->img_upload('./upload/user/', $file_name);
        $user_pic = 'upload/user/'.$file_name.$img['file_ext'];
    } else {
        $user_pic = 'upload/default.png';
    }

私が思う問題はifステートメントの中にありますが、それが何であるかはわかりません。私が画像を選択した場合、それはそれをうまくアップロードし、すべてがうまく機能します。これを行う代わりに、画像フィールドを空白のままにした場合(ファイルを選択しない場合):

$user_pic = 'upload/default.png';

存在しないファイルをアップロードしようとすると、エラーがスローされます。img_upload()関数は、私が作成したカスタムライブラリ内にありますが、ファイルが送信されていない場合は、その関数を呼び出すこともできません。

助けてくれてありがとう!

4

1 に答える 1

1

issetは、チェックしている項目に何も含まれていない場合、null の場合、または false の場合でも true を返します。

この問題を回避するには、次のようにを使用します。

if(!empty($_FILES['userfile']))

これは、$_FILES['userfile'] に null、false、または空ではない値が含まれている場合にのみ true を返します。

それが役立つことを願っています:-)。

于 2012-09-22T23:59:14.337 に答える