您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

php header

2024/4/29 20:56:42发布7次查看
header
(php 3, php 4, php 5)
header -- 发送一个原始 http 标头 说明 void  header ( string string [, bool replace [, int http_response_code]] )
header() 函数用来发送一个原始 http 标头。有关 http 标头的更多内容见 http/1.1 规范。
可选参数 replace 指明是替换掉前一条类似的标头还是增加一条相同类型的标头。默认为替换,但如果将其设为 false 则可以强制发送多个同类标头。例如:
第二个可选参数 http_response_code 强制将 http 响应代码设为指定值(此参数是 php 4.3.0 新加的)。
有两种特殊的 header 调用。第一种是标头以字符串“http/”(大小写不重要)开头的,可以用来确定要发送的 http 状态码。例如,如果配置了 apache 用 php 来处理找不到文件的错误处理请求(使用 errordocument 指令),需要确保脚本产生了正确的状态码。
注: http 状态码标头行总是第一个被发送到客户端,而并不管实际的 header() 调用是否是第一个。除非 http 标头已经发送出去,任何时候都可以通过用新的状态行调用 header() 函数来覆盖原先的。
第二种特殊情况是以“location:”标头。它不只是把这个标头发送回浏览器,它还将一个 redirect(302)状态码返回给浏览器,除非之前已经发出了某个 3xx 状态码。
注: http/1.1 标准需要一个绝对地址的 uri 做为 location: 的参数, 但有一些客户端支持相对 uri。通常可以使用 $_server['http_host']、$_server['php_self'] 及 dirname() 函数来自己从相对 uri 产生出绝对 uri:

注: 即使启用了 session.use_trans_sid,session id 也不会随着 location 头信息被传递。必须手工用 sid 常量来传递。
php 脚本通常会产生一些动态内容,这些内容必须不被浏览器或代理服务器缓存。很多代理服务器和浏览器都可以被下面的方法禁止缓存:
注: 可能会发现即使不输出上面所有的代码,网页也没有被缓冲。用户有很多选项可以设置来改变浏览器的默认缓存行为。通过发送上述标头,应该可以覆盖任何可以导致脚本页面被缓存的设置。
另外,当使用了 session 时,利用 session_cache_limiter() 函数和 session.cache_limiter 选项可以用来自动产生正确的缓存相关标头。
要记住 header() 必须在任何实际输出之前调用,不论是来自普通的 html 标记,空行或者 php。有一个常见错误就是在通过 include(),require() 或一些其它的文件存取类函数读取代码时,有一些空格或者空行在调用 header() 之前被发送了出去。同样在一个单独的 php/html 文件中这个错误也很普遍。
注: 自 php 4 起,可以通过一些输出缓冲函数来解决这个问题。代价是把所有向浏览器的输出都缓存在服务器,直到下命令发送它们。可以在代码中使用 ob_start() 及 ob_end_flush() 来实现这样的功能,或者通过修改 php.ini 中的 output_buffering 配置选项来实现,也可以通过修改服务器配置文件来实现。
如果想提示用户保存所发送的数据,例如一个生成的 pdf 文件,可以通过发送 content-disposition 标头提供推荐的文件名来强制浏览器弹出一个保存文件对话框。
注: microsoft internet explorer 4.01 中的一个漏洞使得该机制无法正常工作,无解决方案。在 microsoft internet explorer 5.5 中也有个漏洞影响到这一点,升级到 service pack 2 或更高版本可以解决。
注: 在安全模式下,如果设定了 www-authenticate 标头(用于 http 认证)则脚本的 uid 会添加到其中的 realm 部分中去。
---------------------------------------------------------------------------------------
-----------------------------------------------------------------------------
在php中用header(location:test.php)进行跳转要注意以下几点:
1、location和“:”号间不能有空格,否则会出错。
2、在用header前不能有任何的输出。
3、header后的php代码还会被执行。
下面是和asp中重定向response.redirect的比较:
例1:
response.redirect ../test.asp
header(location:../test.php);
两者区别:
asp的redirect函数可以在向客户发送头文件后起作用.

查是php中下例代码会报错:
header(location:../test.php);
?>
只能这样:
header(location:../test.php);
?>
...
即header函数之前不能向客户发送任何数据. 例2:
asp中
response.redirect ../a.asp
response.redirect ../b.asp
%>
结果是重定向a.asp文件.
php呢?
header(location:../a.php);
header(location:../b.php);
?>
我们发现它重定向b.php.
原来在asp中执行redirect后不会再执行后面的代码.
而php在执行header后,继续执行下面的代码.
在这方面上php中的header重定向不如asp中的重定向.有时我们要重定向后,不能执行后面的代码:
一般地我们用
if(...)
header(...);
else
{
...
}
但是我们可以简单的用下面的方法:
if(...)
{ header(...);exit();}
还要注意的是,如果是用unicode(utf-8)编码时也会出现问题,需要调整缓存设置.
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录