Codeigniter上传不允许的文件不会产生错误

时间:2014-03-24 20:41:29

标签: php codeigniter

基于CI文档中的示例,我使用这个简单的Codeigniter图像上传遇到了问题。

出了什么问题:

1。)如果上传的文件类型不正确,则不会返回错误。它将我的所有post变量设置为null并继续处理。

2.。)我可以上传.sql和一些(但不是全部).exe文件,甚至可以将允许的文件类型限制为jpg,gif和png。

因此,这不是常见的拒绝允许文件类型的问题,而是过于宽松,并且在应该的时候不会返回错误。

    $photo = $this->input->post("photo");

    $config['upload_path'] = './profile_img/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '100';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';

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

    if(isset($_FILES['userfile']) && $_FILES['userfile']['size'] > 0){  
        if ( ! $this->upload->do_upload('userfile'))
        {
                $error = $this->upload->display_errors();
                $this->session->set_userdata("message", $error);
                header("Location: /page/account");
        }
        else
        {
                $upload_data = $this->upload->data();
                $photo = $upload_data['file_name'];
        }
    }

    $data = array(
        'first_name' => $this->input->post("first_name"),
        'last_name' => $this->input->post("last_name"),
        'username' => $this->input->post("username"),
        'default_meeting_duration' => $this->input->post("default_meeting_duration"),
        'notification_type' => $this->input->post("notification_type"),
        'photo' => $photo
    );

    $this->user_model->update($data, $this->ion_auth->get_user_id());
    $this->session->set_userdata("message", "Account Settings Saved");
    header("Location: /page/account");

1 个答案:

答案 0 :(得分:0)

奇怪的是,解决方案是在错误条件中的第一次重定向之后插入exit()。

显然,行为是这样的,即使发现错误条件,也会忽略重定向,并执行其余的脚本。显然CI中的一个错误令人困惑,很难找到。