Codeigniter: произошла ошибка PHP

в моем коде это ошибка, какое решение для этого

Произошла ошибка PHP

Серьезность: предупреждение

Сообщение: Невозможно изменить информацию заголовка — заголовки уже отправлены (вывод начался в /home/websites/public_html/application/controllers/user.php:64)

Имя файла: helpers/url_helper.php

Номер строки: 546

это мой код

function register()
{
                     $email=$_POST['email'];
                    $pass=$_POST['pass'];
                     $cpass=$_POST['cpass'];
            $valid = array(
                                    array(
                                        'field'   => 'email',
                                        'label'   => 'Username(Email)',
                                        'rules' => 'trim|required|valid_email|is_unique[register.email]'
                                    ), 
                                    array(
                                        'field'   => 'pass',
                                        'label'   => 'Password',
                                        'rules'   => 'trim|required||matches[cpass]|min_length[8]|max_length[30]|'
                                    ),
                                    array(
                                        'field'   => 'cpass',
                                        'label'   => 'Confirm Password',
                                        'rules'   => 'trim|required'
                                    )
                            );
                $this->form_validation->set_rules($valid); 
        $this->form_validation->set_error_delimiters('<div class="error_txt">', '</div>');
        if ($this->form_validation->run() == FALSE)
        {
            echo "error";
            redirect('/home/'); 
        }
        else
        {

            $this->load->model('User_model');       
            $rs=$this->User_model->register($_POST);

            redirect('/home/'); 
        }
}

person user1346624    schedule 20.04.2012    source источник
comment
Вы должны выбрать ответ как лучший ответ, если вы нашли его полезным.   -  person Naveed Hasan    schedule 27.11.2013


Ответы (3)


Вероятно, это происходит здесь:

эхо "ошибка";

Вместо этого попробуйте вернуть ошибку вызывающей стороне, а затем отобразить ошибку из представления.

person Lowkase    schedule 20.04.2012

Не используйте перенаправление в ajax-вызовах. Вы можете достичь своей цели с помощью перенаправления javascript. Попробуйте этот фрагмент:

if ($this->form_validation->run() == FALSE)
{
  echo "error";
}
else
{
  $this->load->model('User_model');       
  $rs=$this->User_model->register($_POST);
}

В ЯВАСКРИПТЕ:

window.location = '<?php echo site_url('home'); ?>';
person Code Prank    schedule 20.04.2012

redirect фактически отправляет заголовок Location в браузер.

Ваш выход уже начался. Сервер должен отправить заголовки до начала любого вывода. Вы делаете echo перед перенаправлением. Таким образом, он выдает ошибку, поскольку не может отправлять заголовки после начала вывода.

удалите этот echo, и он должен работать для вас.

person Broncha    schedule 21.04.2012