我在一個文件findRecords.php
有穩定的PHP代碼在我的網站如下偶爾失敗-of-每一頁的導航欄,沿着線:調用header()函數與「已經發出頭」
<div class="pageTopRowContainerLabel">
<a class="pageTopRowTextStyle"
href="http://localhost/myProj/index.php">HOME</a>
</div>
// more nav bar divs not shown....
裏面findRecords.php我做一個簡單的數據庫查詢,並得到一些記錄,並打算通過header()
切換到顯示在瀏覽器中的那些記錄到另一個顯示這些頁面的頁面記錄(showRecords.php
)。
如果您注意到上述內容,您可以在上面看到,在findRecords.php
中,通過include'topNavigationBar.php'語句,html頭部已經發送了一些用於顯示我的導航欄的html div。
然後,我需要打個電話報頭()這個相同的findRecords.php
文件中實現郵政/重定向/獲取:
header("Location: http://localhost/myProj/showRecords.php", true, 303);
上述工作正常。找到數據庫中的記錄我header()
到showRecords.php
以顯示它們。
好吧,現在我剛剛添加了一個heredoc到上面一直包含在findRecords.php(參見上面)中的varsAndStatics.php。我現在下面定界符添加到長期穩定的文件varsAndStatics.php:
echo <<<_RIDOFWHITESPACE
<br />
<script type="text/javascript">
function ridOfWhiteSpace(theFormElementFieldValue, bLtrsOnly, bLtrsNumsOnly)
{
// Remove whitespace
if(theFormElementFieldValue.indexOf(" ")!=-1)
{
var doozh = theFormElementFieldValue.split(" ").join("");
theFormElementFieldValue = doozh;
}
return theFormElementFieldValue;
}
</script>
_RIDOFWHITESPACE;
現在我來header()
致電上述f中indRecords.php
休息了頭部已經發送錯誤。
我不知道爲什麼heredoc打破了這個穩定的代碼。在所有 - 這個電話header()
和導航條碼已經有一段時間了!
我想說的是這樣的:由findRecords.php
發送的頁面將由於包括topNavigationBar.php
導航欄的div - 然後我打電話header()
- 代碼已經相當長一段時間工作的罰款。
在我看來,是因爲有輸出發送到瀏覽器(topNavigationBar.php
的div)當我打電話舊穩定的代碼header()
,在一個heredoc()
的varsAndStatics.php
增加應該不會打破代碼。
是否有一個微妙之處我「米在這裏失蹤?
從根本上說,錯誤提示,你不應該在輸出後發送頭文件,你應該考慮把內容分配給一個輸出變量,然後在渲染完所有內容之後纔回顯一次。使用include(包括html)在這樣的情況下,您將很快遇到問題。 – 2012-01-30 12:42:31
你的問題是一個很長的描述,你輸出的東西,然後使用'header'函數 - 它給你的警告。關於該警告的參考問題是[Headers已經由PHP發送](http://stackoverflow.com/questions/8028957/headers-already-sent-by-php),其中應包含有關您的問題的足夠信息。 – hakre 2012-01-30 12:48:07