php header()函數跳轉無效解決

來源:互聯網
上載者:User
在轉換編碼的時候,有一個頁面需要在head中申明utf-8的編碼,但是這與程式中的一處header產生了衝突。google了一下,找到幾種解決方案,翻譯整理一下:

If you got this message: "Warning: Cannot modify header information - headers already sent by ...."

如果在執行php程式時看到這條警告:"Warning: Cannot modify header information - headers already sent by ...."

Few notes based on the following user posts:

有以下幾種解決方案:

1. Blank lines (空白行):

檢查有 後面沒有空白行,特別是include或者require的檔案。不少問題是這些空白行導致的。

2. Use exit statement (用exit來解決):

Use exit after header statement seems to help some people

在header後加上exit();

header ("Location: xxx");exit();

3. PHP has this annoying problem, if your HTML goes before any PHP code or any header modification before redirecting to certain page, it ll said "Warning: Cannot modify header information - headers already sent by ...." Basically anytime you output to browser, the header is set and cannot be modified. So two ways to get around the problem:

3a. Use Javascrīpt (用Javascrīpt來解決):

 self.location( file.php );"; ?>

Since it s a scrīpt, it won t modify the header until execution of Javascrīpt.

可以用Javascrīpt來代替header。另外需要注意,採用這種方法需要瀏覽器支援Javascrīpt.

3b. Use output buffering (用輸出緩衝來解決):---本人用這種方法解決的!已證實可以!

... HTML codes ...

就像上面的代碼那樣,這種方法在產生頁面的時候緩衝,這樣就允許在輸出head之後再輸出header了。本站的許願板就是採用這種方法解決的header問題。

4.set output_buffering = On in php.ini (開啟php.ini中的output_buffering )

set output_buffering = On will enable output buffering for all files. But this method may slow down your php output. The performance of this method depends on which Web server you re working with, and what kind of scrīpts you re using.

這種方法和3b的方法理論上是一樣的。但是這種方法開啟了所有php程式的輸出緩衝,這樣做可能影響php執行效率,這取決於伺服器的效能和代碼的複雜度。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.