我已經為這個錯誤苦苦掙扎了一段時間了。首先,我只是認為這是空白,但是經過進一步研究,我認為這可能是與此類似的問題:在此標頭語句之前,查找所有可能將輸出發送給用戶的語句。如果找到一個或多個,請更改代碼以將標頭語句移到它們之前。復雜的條件語句可能會使問題復雜化,但也可能有助于解決問題??紤]一下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

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
檢查的東西echo
,print()
或printr()
在包括文件,header.php
。
可能是問題所在,或者如果有任何MVC文件,請檢查之后的空格數?>
。這也可能造成問題。
- 3 回答
- 0 關注
- 559 瀏覽
添加回答
舉報
0/150
提交
取消