亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

警告:無法修改標頭信息-錯誤已發送的標頭

警告:無法修改標頭信息-錯誤已發送的標頭

PHP
楊__羊羊 2019-11-25 10:23:44
我已經為這個錯誤苦苦掙扎了一段時間了。首先,我只是認為這是空白,但是經過進一步研究,我認為這可能是與此類似的問題:在此標頭語句之前,查找所有可能將輸出發送給用戶的語句。如果找到一個或多個,請更改代碼以將標頭語句移到它們之前。復雜的條件語句可能會使問題復雜化,但也可能有助于解決問題??紤]一下PHP腳本頂部的條件表達式,該條件表達式盡早確定標頭值并將其設置在那里。我猜想include標頭和header()一起引起了問題,但是我不確定如何重新排列代碼以消除此錯誤。如何清除錯誤?<?php    $username = $password = $token = $fName = "";    include_once 'header.php';    if (isset($_POST['username']) && isset($_POST['password']))        $username = sanitizeString($_POST['username']);    $password = sanitizeString($_POST['password']); //Set temporary username and password variables    $token    = md5("$password"); //Encrypt temporary password    if ($username != 'admin')    {        header("Location:summary.php");    }    elseif($username == 'admin')    {        header("Location:admin.php");    }    elseif($username == '')    {        header("Location:index.php");    }    else        die ("<body><div class='container'><p class='error'>Invalid username or password.</p></div></body>");    if ($username == "" || $token == "")    {        echo "<body><div class='container'><p class='error'>Please enter your username and password</p></div></body>";    }    else    {        $query = "SELECT * FROM members WHERE username='$username'AND password = '$token'"; //Look in table for username entered        $result = mysql_query($query);        if (!$result)            die ("Database access failed: " . mysql_error());        elseif (mysql_num_rows($result) > 0)        {            $row = mysql_fetch_row($result);            $_SESSION['username'] = $username; //Set session variables            $_SESSION['password'] = $token;            $fName = $row[0];        }    }?>
查看完整描述

3 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

長期的答案是,PHP腳本的所有輸出都應在變量中進行緩沖。這包括標題和正文輸出。然后,在腳本末尾執行所需的任何輸出。


解決您的問題的最快方法是添加


ob_start();

作為腳本中的第一件事,如果僅在此腳本中需要它的話。如果您在所有腳本中都需要它,則將其添加為header.php文件中的第一件事。


這將打開PHP的輸出緩沖功能。在PHP中,當您輸出某些內容(執行回顯或打?。r,它必須在那時發送HTTP標頭。如果打開輸出緩沖,則可以在腳本中輸出,但是PHP在刷新緩沖區之前不必發送標頭。如果將其打開而不關閉,PHP將在腳本完成運行后自動刷新緩沖區中的所有內容。幾乎在所有情況下都打開它確實沒有任何危害,并且在某些配置下可能會給您帶來很小的性能提升。


如果您有權更改php.ini配置文件,則可以查找和更改或添加以下內容


output_buffering = On

這將關閉輸出緩沖,而無需調用ob_start()。


要了解有關輸出緩沖的更多信息,請訪問http://php.net/manual/en/book.outcontrol.php


查看完整回答
反對 回復 2019-11-25
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

檢查的東西echo,print()printr()在包括文件,header.php。

可能是問題所在,或者如果有任何MVC文件,請檢查之后的空格數?>。這也可能造成問題。


查看完整回答
反對 回復 2019-11-25
  • 3 回答
  • 0 關注
  • 559 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號