2013-10-10 47 views
0

喲兄弟。我正在寫這個帖子的後續問題在這裏:Understanding cache limiter | headers already sent php warning 我再次相對較新,但我相對較好,但這讓我難住。PhP Mysql如何使用包含正確,避免標頭錯誤

問題指出:

  • 我使用Xara臨9頁
  • 裏面嵌套PHP腳本,用於發佈各種信息都在頁面導出
  • 我得到「頭已經發出「因爲php的警告位於代碼深處
  • 此外,如果我嘗試添加additional.php腳本它通常最終不會顯示或打破以前的腳本。

因此打破下來,Xara出口index_3.html(我改變index_3.php因此它可以分析。)的Xara文檔的開頭是這樣的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252"/> 
<meta name="Generator" content="Xara HTML filter v.6.0.1.335"/> 
<meta name="XAR Files" content="index_htm_files/xr_files.txt"/> 
<title>index_3</title> etc.... 

而且我據瞭解,現在已經太晚了,因爲輸出了包含php。 Xara在wysiwyg編輯器中使用html佔位符。然後在實際index_3.html(PHP)的代碼,PHP的包括在以後使用類似這樣的文件中一路下跌:

<div style="position: absolute; left: 47px; top: 39px; width: 503px; height: 256px; overflow: hidden;"> 
<div style="width: 503px; height: 256px; overflow: auto;"> 
<?php include 'get_opwire.php'; ?> 
</div> 
</div> 

(至於爲什麼它的股利雙打我不知道)...無論如何,該get_opwire.php 顯示一個表像它的假設,但它會拋出這些頭部警告。然後另外,在index_3進一步下跌,還有另外一個PHP ..

<div style="position: absolute; left: 30px; top: 533px; width: 100px; height: 26px;"> 
<div style="width: 100px; height: 26px;"> 
<?php include 'usernameget.php'; ?> 
</div> 
</div> 

usernameget.php拒絕顯示,除非我擺脫opwire,彷彿xara只想處理1所PHP包容。

因此,要解決的警告,我一直在考慮在前面的問題

1.) Have separate files. You would have a file like page_start.php that does includes and session_start that you include at the very 
top of index_3.php, and a file like display_table.php that displays 
your table that you include where the table goes. 

2.) Turn the table into a function. You would wrap the table output inside a function, include get_opwire.php at the very top of 
index_3.php, then call the function down where you want the table. 

3.) Use output buffering. Output buffering catches the stuff printed out so that you can use it later. It would go like this: 

我與所有這三種一天,現在尤其是選項3試驗3個選項,但我只是到新的PHP把它放在一起。我還想從邏輯上理解爲什麼第二個PHP包含失敗並知道我的實際最佳選項是什麼。非常感謝幫助!

編輯:錯誤:

[08-Oct-2013 11:36:09] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /home2/mysite/public_html/mysubsite/index_3.php:7) in /home2/mysite/public_html/mysubsite/functions.php on line 12 

[08-Oct-2013 11:36:09] PHP Warning: session_regenerate_id() [<a href='function.session-regenerate-id'>function.session-regenerate-id</a>]: Cannot regenerate session id - headers already sent in /home2/mysite/public_html/mysubsite/functions.php on line 13 
+0

請發佈您從腳本收到的實際錯誤。如果它在發送頭文件後抱怨開始會話,請將session_start放在索引文件/主文件的頂部,而不是放在包含的文件中。 – aynber

+0

在 – sylcat

+0

編輯的實際錯誤看來,當我把包括在index_3.php的頂部,它加載爲白頁,沒有任何圖形或php表 – sylcat

回答

0

session_start()和任何其他會話操縱(創建會話ID,移動會話文件夾)必須在任何輸出被髮送到瀏覽器來完成。嘗試把它作爲索引/主文件的第一行,並確保它不在任何其他文件中。

+0

當我嘗試,加載文件不再起作用,它只是顯示一個白頁,並沒有新的記錄錯誤... – sylcat

+0

奇怪的是,它會這樣做。某處應該有一些錯誤。 – aynber

+0

我會公開我的代碼的全部,以解決這個問題,但它是相當深入的。思考? – sylcat