0

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

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

3 回答 3

5

它可能发生在这里:

回声“错误”;

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

于 2012-04-20T13:33:29.097 回答
0

redirectLocation实际上向浏览器发送标头。

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

删除它echo,它应该适合你。

于 2012-04-21T16:20:51.077 回答
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'); ?>';
于 2012-04-20T15:04:25.940 回答