« 上一篇下一篇 »

利用PHP控制首部

利用PHP,可以精心控制服务器发送给浏览器的首部,从而有可能完成一些首部驱动的任务,如HTTP认证。在PHP脚本中要利用内置header()函数将首部从服务器发送到浏览器。Header()函数允许从PHP脚本创建和发送首部。

Header()函数会立即从服务器向浏览器发送一个首部,而且这个函数必须在向浏览器发送任何具体内容之前调用。这是一个非常严格的要求,如果在首部之前即使只是发送了一个字符或空格,浏览器也会拒绝并报错。出于这个原因,header()函数调用应当放在PHP脚本中的所有HTML代码之前。即使<?php标记前面一个随意的空格也会导致这个脚本出错,<?php ?>标记内部的空格不会导致出现问题因为它们不会传递到浏览器。服务器发送页面中的任何HTML内容之前,会向浏览器发送这个首部进行处理。

所有对header()函数有了解的人都知道,这个函数会发送一段文件头给浏览器,但是如果在使用这个函数之前已经有了任何输出(包括空输出,比如空格, 回车和换行)就会提示出错。如果我们去掉第一行的ob_start(),再执行此程序,我们会发现得到了一条错误提示:“Header had all ready send by”!但是加上ob_start,就不会提示出错,原因是当打开了缓冲区,echo后面的字符不会输出到浏览器,而是保留在服务器,直到你使用 flush或者ob_end_flush才会输出,所以并不会有任何文件头输出的错误!

« 上一篇下一篇 »