Cannot modify header information – headers already sent… en Codeigniter

publicado por: Anonymous

Que tal, estoy insertando datos y una imagen en Codeigniter por medio de un formulario, todo eso funciona, pero me manda lo siguiente:

Severity: Warning

Message: Cannot modify header information – headers already sent by (output started at /xxx/xxx/xxxx/xxxx/application/controllers/MController.php:78)

Filename: helpers/url_helper.php

Line Number: 564

Backtrace:

File: /xxx/xxxx/xxxxx/xxxx/application/models/MModel.php
Line: 124
Function: redirect

File: /xxx/xxx/xxx/xxxx/application/controllers/MController.php
Line: 94
Function: insertPrueba

El error que marca es en MController en la línea 78,

public function add(){


         $config['upload_path'] = './imagenes/';
         $config['allowed_types'] = 'gif|jpg|png|jpeg';
         $config.... 
  {
  echo("<script>console.log('Error al subir la imagen');</script>");
  $error = array('error' => $this->upload->display_errors());
  }
  else
  {

   echo("<script>console.log('Imagen subida correctamente');</script>");// <---Aquí marca error, línea 78

  }

En MModel la línea que marca error es la 124:

public function insertPrueba($data){

                $this->db->insert(TABLE_PRODUCTO,$data);
              redirect('MController');// Aquí marca el error

        }

En index() de MController cargo unos datos que quiero mostrar y cargo páginas estáticas:

public function index()
 {




        $data['me'] = $this->MModel->getAll();
        $data['mB'] = $this->MModel->getAllB();
        $data['mP'] = $this->MModel->getAllP();
    $data['cat'] = $this->MModel->getAllCat();


        $this->load->view('estaticos/header');
        $this->load->view('dinamicos/menu/menus', $data);
        $this->load->view('estaticos/menu_izquierdo');
        $this->load->view('estaticos/footer');
        $this->load->view('estaticos/menu_derecho');
    }

No se si tenga algo que ver que use redirect('MController');

He revisado estas respuestas, pero no tengo espacios en blanco el iniciar <?php o al terminar… ni nada de las posibles causas..
How to fix “Headers already sent” error in PHP

solución

CodeIgniter hace la redirección a través de la cabecera/encabezados (header), pero una vez que se ha escrito en la página, no se puede cambiar los valores de la cabecera. Es por eso que estás recibiendo el error, como se especifica en la documentación (en inglés) (traducción mía):

Nota: para que esta función funcione correctamente debe ser usada antes de que algo se escriba en el navegador porque utiliza las cabeceras del servidor

En tu código, estás realizando una operación y hay un if..else que tiene un echo en ambas ramas. Eso quiere decir que siempre se va a escribir algo por pantalla. Al poner el redirect después de esas operaciones, siempre vas a recibir el mensaje de error que mencionas.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *