background image

header()函数后加上

exit

()函数。例如下面的错误写法,在两个 php 代码段之间有一个空行:

代码如下:
 

//some code here

?>

//这里应该是一个空行

header(”http/1.1 403 Forbidden”);

exit

();

?>
 
原因是:PHP

 

脚本开始执行 时,它可以同时发送 http 消息头部(标题)信息和主体信息. http

消息头部(

 

来自 header()   

或 SetCookie() 函数)并不会立即发送,相反,它被保存到一个列表中. 

这样就可以允许你修改标题信息,包括缺省的标题(

 

例如 Content-Type 标题).但是,一旦脚

本发送了任何非标题的输出(例如,

 

使用 HTML   

print

() 调用),那么 PHP 就必须先发送完

所有的 Header,

 

然后终止 HTTP header.而后继续发送主体数据.从这时开始,任何添加或修改

Header 信息的试图都是不允许的,并会发送上述的错误消息之一。
解决办法:
修改 php.ini 打开缓存(output_buffering),或者在程序中使用缓存函数
ob_start(),ob_end_flush()等。原理是:output_buffering 被启用时,在脚本发送输出时,PHP
并不发送 HTTP header。相反,它将此输出通过管道(pipe)输入到动态增加的缓存中(只
能在 PHP 4.0 中使用,它具有中央化的输出机制)。你仍然可以修改/添加 header,或者设
置 cookie,因为 header 实际上并没有发送。当全部脚本终止时,PHP 将自动发送 HTTP 
header 到浏览器,然后再发送输出缓冲中的内容。
=================================================================
PHP 手册实例应用
1:您可以使用 heder

 

命令,强制使浏览器使用新鲜的内容(无缓存) 。

也可以给网址增加了一个唯一的编号,使其每次都读取新的内容,避免缓存。
example:
代码如下:
 
<?

print

 "<img src="cs.jpg" mce_src="cs.jpg">"; 

//通常读取的是缓存文件

?>
<?

print

 "<img src="cs.jpg?".time()."" mce_src="cs.jpg?".time()."">"; 

//增加了唯一的编号,使浏

览器重新请求

w

//print "<img src="cs.jpg?".rand(100,999)."" mce_src="cs.jpg?".rand(100,999)."">"; 

?>
 
2: 下面是个很好的函数,将图片传送给浏览器显示。
代码如下: