Я работаю над проектом codeigniter.В конфигурации загрузки изображений он зашифрован, что позволяет использовать уникальные имена файлов, чтобы избежать перезаписи и дублирования имени и для большей безопасности в целом.
Таким образом, при загрузке он зашифрует имя файла изображения и сохранит зашифрованное имя в базе данных, сохранив изображение в папке с активами.Но по какой-то причине он, похоже, не шифрует имена изображений вообще.Почти как если бы он полностью игнорировал опции $config
и просто загружал изображение.
Также я попытался использовать функцию обратного вызова, чтобы избежать пустой загрузки, и снова кажется, что она также игнорируется, и публикация все еще разрешена.
Если кто-нибудь может дать совет.Пожалуйста.
Контроллер
//Callback validation
$this->form_validation->set_rules('userfile','Photo','callback_photo_check');
if($this->form_validation->run() === FALSE){
$this->load->view('templates/header');
$this->load->view('posts/create', $data);
$this->load->view('templates/footer');
} else {
if($this->form_validation->run()==TRUE){
$config['upload_path'] = 'assets/images/posts';
$config['allowed_types'] = 'gif|jpg|jpeg';
$config['encrypt_name'] = TRUE; //TURN ON
$config['max_size'] = 0;
$config['max_width'] = 0;
$config['max_height'] = 0;
$this->upload->initialize($config);
if(!$this->upload->do_upload('userfile')){
$errors = array('error'=>$this->upload->display_errors());
$this->load->view('templates/header');
$this->load->view('posts/create', $errors);
$this->load->view('templates/footer');
}else {
$this->post_model->create_post($this->upload->data('full_path'),$this->input->post());
}
}
$this->session->set_flashdata('post_created','Your Post has been submitted');
redirect('posts');
}
}
public function photo_check(){
if(empty($_FILES['userfile'])){
$this->form_validation->set_message('photo_check', 'need a image');
return FALSE;
}
else{
return TRUE;
}
}
Модель
public function create_post($path,$post){
$data = array(
'about'=> $this->input->post('Description'),
'image' => $path,
);
return $this->db->insert('posts',$data);