我在一个代码点火器控制器中有两个功能,它将设置用户的付款状态并发送电子邮件。一个主函数将调用sendmail。send_mail函数将返回true或false。然后在该主功能中,用户将被重定向
这是代码。。
function send_emai($id){
..
..
return $this->email->send();
}
function set_paid(){
//set paid to user data
$paid=$this->admin_model->set_paid($id_user);
..
..
$sent=$this->send_email($id_user);
if($paid && $sent){
$this->session->set_flashdata('status',
array(
'color'=>'green',
'message'=>'status paid<br/>Payment Confirmation Email sent'));
}
else{
$this->session->set_flashdata('status',
array(
'color'=>'green',
'message'=>'Booth status not paid<br/>Payment Confirmation Email not sent'));
}
redirect(admin/myclass/myfunction);
}
我的错误是
Cannot modify header information - headers already sent by (output started at C:...coreExceptions.php:185)
Filename: libraries/Session.php
还有这个
Cannot modify header information - headers already sent by (output started at C:...coreExceptions.php:185)
Filename: helpers/url_helper.php
我认为这是因为$this->send->email()
。如果我省略了发送功能我可以被重定向到页面,并通过会话设置通知
那么,我该怎么办呢?
服务器上是否启用了error_reporting?如果是,请检查是否出现了一些通知或警告。或者尝试
error_reporting("E_ERROR");
如果在任何标头重定向之前有回声或打印的内容,甚至还有任何HTML或纯文本,则通常会发生在任何标头重新定向之前无法修改标头。
希望这对有帮助
发送邮件后使用$this->email->clear()
。这会将所有电子邮件变量初始化为空状态。