一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

關(guān)于 Cannot modify header information 的解決

 suncly 2007-04-17
昨晚在轉(zhuǎn)換編碼的時候,有一個頁面需要在head中申明utf-8的編碼,但是這與程序中的一處header產(chǎn)生了沖突。google了一下,找到幾種解決方法,翻譯整理一下:

If you got this message: "Warning: Cannot modify header information - headers already sent by ...."
如果在執(zhí)行php程序時看到這條警告:"Warning: Cannot modify header information - headers already sent by ...."

Few notes based on the following user posts:
有以下幾種解決方法:

1. Blank lines (空白行):
Make sure no blank line after <?php ... ?> of the calling php scrīpt.
檢查有<?php ... ?> 后面沒有空白行,特別是include或者require的文件。不少問題是這些空白行導(dǎo)致的。

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來解決):
<? echo "<scrīpt> self.location( file.php );</scrīpt>"; ?>
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 (用輸出緩存來解決):
<?php ob_start(); ?>
... HTML codes ...
<?php
... PHP codes ...
header ("Location: ....");
ob_end_flush();
?>
This will save the output buffer on server and not output to browser yet, which means you can modify the header all you want until the ob_end_flush() statement. This method is cleaner than the Javascrīpt since Javascrīpt method assumes the browser has Javascrīpt turn on. However, there are overhead to store output buffer on server before output, but with modern hardware I would imagine it won t be that big of deal. Javascrīpt solution would be better if you know for sure your user has Javascrīpt turn on on their browser.

就像上面的代碼那樣,這種方法在生成頁面的時候緩存,這樣就允許在輸出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執(zhí)行效率,這取決于服務(wù)器的性能和代碼的復(fù)雜度。 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产男女激情在线视频| 日韩一本不卡在线观看| 欧美亚洲三级视频在线观看| 国产在线日韩精品欧美| 亚洲国产精品av在线观看| 青草草在线视频免费视频| 国产在线成人免费高清观看av| 国产乱淫av一区二区三区| 激情爱爱一区二区三区| 欧美丰满大屁股一区二区三区| 东北老熟妇全程露脸被内射| 中文字幕欧美视频二区| 亚洲国产中文字幕在线观看| 视频一区中文字幕日韩| 国产一级一片内射视频在线| 日韩人妻精品免费一区二区三区| 亚洲精品国男人在线视频| 国产麻豆视频一二三区| 亚洲欧美日韩网友自拍| 老熟妇2久久国内精品| 国产又黄又猛又粗又爽的片 | 色老汉在线视频免费亚欧| 亚洲欧美日产综合在线网| 东京不热免费观看日本| 欧美自拍偷自拍亚洲精品| 中国黄色色片色哟哟哟哟哟哟| 国产精品欧美在线观看| 五月激情婷婷丁香六月网| 日韩午夜老司机免费视频| 中文字幕人妻av不卡| 不卡一区二区在线视频| av在线免费播放一区二区| 色婷婷视频在线精品免费观看| 亚洲综合激情另类专区老铁性| 综合久综合久综合久久| 精品国产品国语在线不卡| 精品日韩中文字幕视频在线| 男人大臿蕉香蕉大视频| 日韩不卡一区二区在线| 国产麻豆精品福利在线| 日韩一区二区三区有码|