0

私の Codeigniter コントローラーには、ファイルのアップロードを検証する次のプライベート関数があります。

     private function avatar_file_validation()
     {
        $config['upload_path'] = './uploads/avatars/';
        $config['allowed_types'] = 'jpg|png';
        $config['overwrite'] = TRUE; //overwrite user avatar
        $config['max_size'] = '800'; //in KB

        $this->load->library('upload', $config);

        if (! $this->upload->do_upload('avatar_upload'))
        {
            $error_data = array('error' => $this->upload->display_errors());

            $this->avatar_view($error_data); //loads view

            return FALSE;
        }

     }

アップロードでエラーが発生した場合、この機能の続行を停止したい

function upload_avatar()
{

    //some code

    if($_FILES['entry_upload']['error'] !== 4) //if file added to file field
    {
        $this->avatar_file_validation(); //if returns FALSE stop code
    }

    //code continues: adds data to database, redirects

}

ただし、false を返しても機能は継続します。1 つの関数でコード全体を使用する場合にのみ機能しますが、複数の関数でアップロードの検証を使用するため、それらを分離する必要があります。ここで何が間違っていますか?

4

2 に答える 2

2

return FALSE;は関数にのみ適用されますavatar_file_validation()upload_avatar()アップロードが失敗したときにコードを停止する場合は、 の出力を確認し、avatar_file_validation()等しい場合FALSEはその関数からも返す必要があります。

例えば:

function upload_avatar()
{
    //some code

    if($_FILES['entry_upload']['error'] !== 4) //if file added to file field
    {
        if(!$this->avatar_file_validation()) //if returns FALSE stop code
            return FALSE;
    }

    //code continues: adds data to database, redirects
}
于 2012-07-09T19:15:58.203 に答える
2
function upload_avatar()
{

    //some code

    if(!$_FILES['entry_upload']['error'] !== 4) //if file added to file field
    {
        if($this->avatar_file_validation()){
             return FALSE;
         }
    }

    //code continues: adds data to database, redirects

}
于 2012-07-09T19:16:30.487 に答える