Codeigniter:遇到PHP错误

时间:2012-04-20 13:14:10

标签: codeigniter

在我的代码中,他们的错误是什么解决方案

遇到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/'); 
        }
}

3 个答案:

答案 0 :(得分:5)

它可能发生在这里:

echo“错误”;

而是尝试将错误返回给调用者,然后从视图中显示错误。

答案 1 :(得分:0)

不要在ajax调用中使用重定向。您可以使用javascript重定向来实现目标。试试这个片段:

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

在JAVASCRIPT中:

window.location = '<?php echo site_url('home'); ?>';

答案 2 :(得分:0)

redirect实际上会向浏览器发送Location标头。

您的输出已经开始。服务器必须在任何输出启动之前发送标头。您在重定向之前正在执行echo。所以它抛出一个错误,因为在输出开始后它无法发送标题。

删除echo,它应该适合你。