[英]Why I'm not getting a 'Warning: Cannot modify header information - headers already sent by' as I expected to get one?
[英]Why am I getting Warning: Cannot modify header information - headers already sent by (output started at …)?
我正在重用搜索PHP腳本,但出現此錯誤:
警告:無法修改標頭信息-已在/ Volumes / Work / MAMP / PC Flag / includes / search.php中發送的標頭(輸出從/ Volumes / Work / MAMP / PC Flag / php_scripts / conection.php:2開始) 63行
第2行corction.php:
$con = mysqli_connect("localhost", "root", "root", "cms");
第63行search.php:
header('Location: search-page.php?keywords=' . urlencode($keywords));
問題是什么?
我還需要提到的是,該腳本不再像應有的那樣將我重定向到search-page.php。
當您使用header()
它之前不應有任何輸出,甚至也不能有空格,您有兩種解決方案:
在標頭之前使用ob_clean()
清理輸出緩沖區
ob_clean();
header('Location: search-page.php?keywords=' . urlencode($keywords));
在腳本和請求路徑中搜索任何輸出, <?php
之前的內容, echo
es,HTML代碼, ?>
之后的print
或?>
后的空格通常是造成此問題的原因;)
該代碼段可以幫助您找出代碼輸出的位置:
var_dump(ob_get_contents());die()
將此放在第63行之前
萬一一切失敗,您可以使用javascript進行重定向,盡管我建議您繼續嘗試,但請注意:)
將header(...)
替換為:
echo '<script>window.location.href="search-page.php?keywords=' . urlencode($keywords)) . '";</script>';
您已經發送了標頭作為錯誤狀態。 請調查何時以及如何發送標頭 。
當在該行之前的某些內容打印到輸出緩沖區時,通常會發生這種情況。
確保您使用的是UTF-8 without BOM
文檔編碼的UTF-8 without BOM
-BOM符號在大多數文本編輯器中不可見,但可以解釋為強制發送HTTP標頭的內容。
您可以使用輸出控制功能調試輸出
之所以這樣,是因為已經發送了輸出。 回顯任何內容后都無法編輯標題信息!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.