2012-01-30 50 views
0

我在一個文件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增加應該​​不會打破代碼。

是否有一個微妙之處我「米在這裏失蹤?

+1

從根本上說,錯誤提示,你不應該在輸出後發送頭文件,你應該考慮把內容分配給一個輸出變量,然後在渲染完所有內容之後纔回顯一次。使用include(包括html)在這樣的情況下,您將很快遇到問題。 – 2012-01-30 12:42:31

+0

你的問題是一個很長的描述,你輸出的東西,然後使用'header'函數 - 它給你的警告。關於該警告的參考問題是[Headers已經由PHP發送](http://stackoverflow.com/questions/8028957/headers-already-sent-by-php),其中應包含有關您的問題的足夠信息。 – hakre 2012-01-30 12:48:07

回答

0

還沒有看到爲什麼頭()已經爲周儘管這段時間其實工作的解釋,findRecord.php一直送我的導航欄HTML與HTML頭和我的調用header()函數是工作正好。只是從這裏的一些人的猜測 - 沒有答案。我花了一天時間瀏覽頁面頂部導航欄的代碼和html和div,然後對header()的調用效果很好。然後,只要我對heredoc解除註釋,當遇到header()(在那裏,工作正常,幾周)的調用時,我會得到一個'headers already sent'警告。

我的代碼中沒有任何東西可以解釋爲什麼在發送導航欄html之後,爲什麼對header()的調用在過去的幾周內工作正常。請不要再對我的問題加以推測!如果你不知道答案,不要混淆這個問題。在這些測試中,讓SWAGS(愚蠢的野蠻猜測)像「似乎你的輸出自動化設置發生了變化」是多層次的猜測,並沒有什麼幫助。

我會發現爲什麼我的導航欄html輸出和header()調用工作得很好,爲什麼他們在添加heredoc時發生中斷,然後將其發回到此處。

1

看來,你必須在這些測試output_buffering設置在某種程度上改變。

裏面findRecords.php我做一個簡單的數據庫查詢,並得到一些記錄,並打算通過使用header()切換到一個不同的頁面顯示這些記錄(showRecords.php)來顯示在瀏覽器中的那些記錄。

我認爲沒有PO int在這裏。爲什麼你不能指導用戶已經showRecords.php?或者只是包括它,沒有重定向?

+0

我同意Col Shrapnel在這裏,這種做法似乎有點無意義 – Sondre 2012-01-30 12:44:24

+0

我喜歡一個不錯的自助餐; p – 2012-01-30 12:47:25

相關問題