2016-04-13 20 views
0

Web sitem, Codeigniter kullanılarak oluşturulmuştur ve kullanıcıların kendi bilgilerini değiştirmeleri için bir alan vardır. Bu alan, kullanıcıların bir profil resmi seçmesine izin verir ve düzenlerken, seçilen fotoğraf önizlenir. Yeni bir tane seçmedikleri takdirde, ismini saklayan bir hidden alanı vardır, aynı görüntü adını belirtmek için denetleyiciye iletilir, ancak kullanıcı değiştirmeye karar verirse, yeni ad denetleyiciye iletilir.

Google Chrome'da
<form action="/auto/usuario/edit/<?php echo $id_usuario; ?>" method="POST" class="formulario" enctype="multipart/form-data"> 
    <input type="hidden" name="tipo_usuario" value="F"/> 
    <div class="p100"> 
     <span class="titulo">Foto de Perfil</span> 
     <div class="imagem_destaque img_perfil image-trigger"> 
      <div class="file-upload-trigger"> 
       <input type="file" name="imagem" class="none file-chooser"/> 
       <img src="/uploads/perfil/<?php echo $u['imagem'] ?>" class="preview more"/> 
      </div> 
     </div> 
     <input type="hidden" name="imagem_old" value="<?php echo $u['imagem']; ?>"/> 
    </div> 

, iyi çalışıyor, ama yeni bir görüntü seçmezseniz Firefox 45'te, bir hata atılır:

public function edit($id) 
{ 
    $this->input->post('tipo_usuario') === 'F' ? $validator = 'editar_pessoa_fisica' : $validator = 'editar_pessoa_juridica'; 

    if ($this->form_validation->run($validator)) { 
     $data = array(); 
     $data['nome_razao_social'] = $this->input->post('nome_razao_social'); 
     $data['nome_responsavel'] = $this->input->post('nome_responsavel'); 
     $data['nome_fantasia'] = $this->input->post('nome_fantasia'); 
     $data['cpf_cnpj'] = $this->input->post('cpf_cnpj'); 
     $data['telefone'] = $this->input->post('telefone'); 
     $data['telefone_2'] = $this->input->post('telefone_2'); 
     $data['email'] = $this->input->post('email'); 
     $data['novo_email'] = $this->input->post('novo_email'); 
     $data['senha'] = md5($this->input->post('senha')); 
     $data['cep'] = $this->input->post('cep'); 
     $data['logradouro'] = $this->input->post('logradouro'); 
     $data['id_cidade'] = $this->input->post('id_cidade'); 
     $data['id_estado'] = $this->input->post('id_estado'); 
     $data['numero'] = $this->input->post('numero'); 
     $data['complemento'] = $this->input->post('complemento'); 
     $data['tipo_usuario'] = $this->input->post('tipo_usuario'); 
     /* 
     HERE IS IN CASE THE USER DOES NOT CHANGE HIS PROFILE PICTURE 
     */ 
     $data['imagem'] = $this->input->post('imagem_old'); 
     $data['url'] = $this->input->post('url'); 

     // Nova senha? 
     if ($this->input->post('novasenha') !== '') { 
      $data['senha'] = md5($this->input->post('novasenha')); 
     } else { 
      $data['senha'] = $this->input->post('senha'); 
     } 

     /* 
     HERE IS IN CASE THE USER CHANGES HIS PROFILE PICTURE 
     */ 
     // Nova imagem? 
     if ($_FILES['imagem']['name'] !== '') { 
      $data['imagem'] = $_FILES['imagem']['name']; 
     } 

     // Novo e-mail? 
     if ($this->input->post('email') !== $this->input->post('novoemail')) { 
      $data['novo_email'] = $this->input->post('novoemail'); 
      $this->Usuarios_model->update($data, $id); 
      $this->Usuarios_model->send_confirmation_email($data['novo_email'], $data['email']); 
     } 

     if ($this->input->post('novo_novo_email') !== $this->input->post('novo_email')) { 
      $data['novo_email'] = $this->input->post('novo_novo_email'); 
      $this->Usuarios_model->update($data, $id); 
      $this->Usuarios_model->send_confirmation_email($data['novo_email'], $data['email']); 
     } 

     if ($this->Usuarios_model->update($data, $id)) { 
      $this->upload->do_upload('imagem'); 
      $this->session->set_flashdata('message', 'Dados alterados'); 
      echo json_encode(array(
       'redirect' => '/usuario/painel' 
      )); 
     } 
    } else { 
     echo json_encode(array(
      'type' => 'validation', 
      'message' => validation_errors(), 
     )); 
    } 
} 

Bu

HTML'dir

Önem:

Mesaj Uyarı: Tanımsız endeksi: IMAGEM

.210

Dosya adı: kontrolörleri/Usuario.php

Hat Numarası: Sadece lokal olarak çalışır 362

.

+0

Form kapatma etiketiniz nerede? Onu kapatıp kapatabilir misin? –

cevap

0

Yeni bir resim yüklemezseniz, $ _FILES [] ifadeniz, hatanın belirttiği gibi tanımsız. Kullanıcının görüntüsünü değiştirip değiştirmediğini kontrol etmek için yapmanız gerekenler:

if (isset($_FILES['imagem']['name'])) { 
    $data['imagem'] = $_FILES['imagem']['name']; 
}