[英]Codeigniter error message Cannot modify header information
當我運行我的 php CodeIgniter 項目時,我收到此錯誤消息:
遇到 PHP 錯誤
嚴重性:警告
消息:無法修改標頭信息 - 標頭已發送(輸出開始於 C:\\AppServ\\www\\tree\\application\\models\\mtree.php:17)
文件名:core/Common.php
行號:442
第 17 行:
echo $row->members_id . "</br>";
這是我的模型函數:
function convert_all() {
$this->db->empty_table('table1');
$this->db->empty_table('table2');
$this->db->query("INSERT INTO `table1` (`members_id`, `members_username`);
$query = $this->db->get('table2');
foreach ($query->result() as $row) {
if ($row->members_id > 1) {
echo $row->members_id . "</br>";
}
if ($this->isadvanced($row->members_id, $row->members_direct_id)) {
$this->insert_to_right($row, $row->members_direct_id);
} else {
$this->insert_to_left($row, $row->members_direct_id);
}
}
}
在使用笨,其最佳建議您echo
只在視圖中。
在任何地方回顯隨機向瀏覽器發送一些數據,之后您無法修改標題(這包括嘗試重定向、設置內容類型等)
您應該重新組織您的代碼,以便echo
僅在視圖中完成。 這將解決您在 Codeigniter 中的標題問題。
這還包括在非視圖 php 文件中右大括號“ } ?>
”后面的額外空格。
在調用 header 函數之前不能顯示任何內容。 你不應該顯示任何形式的模型或控制器以避免這種錯誤。 如果您想從控制器或模型中顯示某些內容,那么您應該將輸出存儲到緩沖區而不是將其發送到瀏覽器。 您可以在調用header()
函數之前使用ob_start()
函數將輸出存儲到緩沖區。 然后你可以做這樣的事情
if(true)
{
header("Location:http://google.com");
}
else
{
ob_end_flush();
}
這是你的問題 - echo $row->members_id 。 ""; - 正如上面的答案所說,不要在你的控制器中回顯一些東西,在視圖中推動它 - 總是
我認為它會有所幫助 使用$config['sess_save_path'] = sys_get_temp_dir();
而不是$config['sess_save_path'] = NULL;
在您的Application/config/config.php
文件中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.