首頁 > 後端開發 > PHP問題 > php header 不起作用怎麼辦

php header 不起作用怎麼辦

藏色散人
發布: 2023-03-11 14:06:01
原創
3094 人瀏覽過

php header不起作用的方法:1、刪除location和「:」號間的空格;2、刪除在用header前的輸出;3、header後的PHP程式碼被執行。

php header 不起作用怎麼辦

本文操作環境:windows7系統、PHP7.1版,DELL G3電腦

php header 不起作用怎麼辦?

PHP Header失效的原因分析及解決方法

#在PHP中用header("location:test.php")進行跳轉要注意以下幾點:

1、location和「:」號間不能有空格,否則會出錯。

2、用header前不能有任何的輸出,包括include的頁面中標籤「?>」後面不能有空格! !

3、header後的PHP程式碼還會執行。

續:

問題:header函數前輸入內容

一般來說在header函數前不能輸出html內容,類似的還有setcookie() 和session 函數,這些函數需要在輸出流中增加訊息頭部資訊。如果在header()執行之前有echo等語句,當後面遇到header()時,就會報出 “Warning: Cannot modify header information – headers already sent by ….”錯誤。就是說在這些函數的前面不能有任何文字、空行、回車等,而且最好在header()函數後面加上exit()函數。例如下面的錯誤寫法,在兩個php程式碼段之間有一個空白行:

//這裡應該是一個空白行

原因:

PHP腳本開始執行時,它可以同時發送http訊息頭部(標題)訊息和主體訊息. http訊息頭部(來自header() 或SetCookie() 函數)並不會立即發送,相反,它被保存到一個清單中.這樣就可以允許你修改標題資訊,包括預設的標題(例如Content-Type 標題).但是,一旦腳本發送了任何非標題的輸出(例如,使用HTML 或print()呼叫),那麼PHP就必須先發送完所有的Header,然後終止HTTPheader.而後繼續發送主體資料.從這時開始,任何添加或修改Header訊息的試圖都是不允許的,並會發送上述的錯誤訊息之一。

解決方法:

修改php.ini開啟快取(output_buffering),將output_buffering=0修改成output_buffering=4096

#或在程式中使用快取函數ob_start() ,ob_end_flush() 等。原理是:output_buffering啟用時,在腳本發送輸出時,PHP並不發送HTTPheader。相反,它將此輸出透過管道(pipe) 輸入到動態增加的快取中(只能在PHP4.0中使用,它具有中央化的輸出機制)。你仍然可以修改/新增header,或設定cookie,因為 header實際上並沒有發送。當全部腳本終止時,PHP將自動發送HTTP header到瀏覽器,然後再發送輸出緩衝中的內容。

推薦學習:《PHP影片教學

以上是php header 不起作用怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板