<完整PHP HTTP参考
定义和用法
的header()函数发送一个原始HTTP标头到客户端。
此外还需要注意的重要header()必须在任何实际的输出被发送之前调用(在PHP 4及更高版本,可以使用输出缓存来解决这个问题):
<html>
<?php
// This results in an error.
// The output above is before the header() call
header('Location: http://www.example.com/');
?>
句法
header(string,replace,http_response_code)
参数 | 描述 |
---|---|
string | 需要。 指定头字符串发送 |
replace | 可选的。 指示头是否应该取代以前或添加第二个头部。 默认值是true (will replace) 。 FALSE (allows multiple headers of the same type) |
http_response_code | 可选的。 迫使HTTP响应代码为指定的值(available in PHP 4.3 and higher) |
提示和注意
Note:由于PHP 4.4此功能防止多个头在一次要被发送。 这是对头部注入攻击保护。
实施例1
防止页面缓存:
<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
?>
<html>
<body>
...
...
Note:有迹象表明,用户可以设置来改变浏览器的默认缓存设置选项。 通过发送上述标题,你应该重写任何这些设置和强制浏览器不缓存!
实施例2
让用户被提示保存一个生成的PDF文件(内容处理标头用于提供推荐的文件名,并强制浏览器以显示保存对话框):
<?php
header("Content-type:application/pdf");
// It will be called downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// The PDF source is in original.pdf
readfile("original.pdf");
?>
<html>
<body>
...
...
Note:有一个在微软IE 5.5是可以避免这种情况的工作中的错误。 该漏洞可以通过升级到Service Pack 2或更高版本来解决。
<完整PHP HTTP参考