2024年4月25日发(作者:)
header()函数的作用是:发送一个原始 HTTP 标头[Http Header]到客户端。
标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头
与 HTML 文件之间尚需空一行分隔。有关 HTTP 的详细说明,可以参 RFC 2068 官方
文件
(/Protocols/rfc2068/rfc2068)。
在 PHP 中送回 HTML 资料前,需先 传完所有的标头。
使用范例
范例一: 本例使浏览器重定向到 PHP 的官方网站。
Header("Location: ";);
exit; //在每个重定向之后都必须加上“exit",避免发生错误后,继续执行。
?>
/**
@title:PHP定时跳转
@功能:等待指定的时间,然后再跳转到指定页面(代替html meta方式)
*/
header("refresh:3;url=");
print('正在加载,请稍等...
三秒后自动跳转~~~');
/*
补充说明:
若等待时间为0,则与header("location:")等效。
*/
header重定向 就等价于替用户在地址栏输入url
?>
范例二:禁止页面在IE中缓存
要使用者每次都能得到最新的资料,而不是 Proxy 或 cache 中的资料,可以使用下列的
标头
header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' ); //兼容http1.0和https
?>
CacheControl = no-cache
Pragma=no-cache
Expires = -1
Expires是个好东东,如果服务器上的网页经常变化,就把它设置为-1,表示立即过期。如
果一个网页每天凌晨1点更新,可以把Expires设置为第二天的凌晨1点。
当HTTP1.1服务器指定CacheControl = no-cache时,浏览器就不会缓存该网页。
旧式 HTTP 1.0 服务器不能使用 Cache-Control 标题。所以为了向后兼容 HTTP 1.0 服
务器,IE使用Pragma:no-cache 标题对 HTTP 提供特殊支持。
如果客户端通过安全连接 () 与服务器通讯,且服务器在
响应中返回 Pragma:no-cache 标题,则 Internet Explorer 不会缓存此响应。
注意:Pragma:no-cache 仅当在安全连接中使用时才防止缓存,如果在非安全页中使用,
处理方式与 Expires:-1 相同,该页将被缓存,但被标记为立即过期。
http-equiv meta标记:
在html页面中可以用http-equiv meta来标记指定的http消息头部。老版本的IE可能
不支持html meta标记,所以最好使用http消息头部来禁用缓存。
范例三: 让使用者的浏览器出现找不到档案的信息。
网上很多资料这样写:php的函数header()可以向浏览器发送Status标头,
如 header(”Status: 404 Not Found”)。
但是我发现实际上浏览器返回的响应却是:
HTTP/1.x 200 OK
Date: Thu, 03 Aug 2006 07:49:11 GMT
Server: Apache/2.0.55 (Win32) PHP/5.0.5
X-Powered-By: PHP/5.0.5
Status: 404 Not Found
Content-Length: 0
Keep-Alive: timeout=15, max=98
Connection: Keep-Alive
Content-Type: text/html
查了一些资料,正确的写法是:
header(”http/1.1 404 Not Found”);
第一部分为HTTP协议的版本(HTTP-Version);第二部分为状态代码(Status);第三部分
为原因短语(Reason-Phrase)。
范例四:让使用者下载档案( 隐藏文件的位置 )


发布评论