在我的代码中,他们的错误是什么解决方案
遇到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/');
}
}
答案 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
,它应该适合你。