基于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");
答案 0 :(得分:0)
奇怪的是,解决方案是在错误条件中的第一次重定向之后插入exit()。
显然,行为是这样的,即使发现错误条件,也会忽略重定向,并执行其余的脚本。显然CI中的一个错误令人困惑,很难找到。