header() 的作用是给客户端发送 HTTP 头信息。
HTTP 响应通常可以理解为两部分:响应头和响应体。响应头里会包含状态码、内容类型、缓存策略、内容长度等信息;响应体才是浏览器最终展示的 HTML、图片、JSON 或文件内容。
跳转
2 秒后跳转:
1 | header('Refresh: 2; URL=http://localhost/session.php'); |
立即跳转:
1 | header('Location: http://localhost/session.php'); |
使用 Location 跳转后建议立即 exit,避免后续 PHP 代码继续执行。
指定内容类型
同一个文件,如果响应头中指定不同的 Content-Type,浏览器会按不同方式处理。
例如 XML:
1 | header('Content-Type: application/xml; charset=utf-8'); |
普通文本:
1 | header('Content-Type: text/plain; charset=utf-8'); |
JSON:
1 | header('Content-Type: application/json; charset=utf-8'); |
文件下载
示例:
1 | $filename = 'tupian.jpg'; |
注意:
Content-Disposition: attachment表示让浏览器下载文件。filename是保存时显示的文件名。- 下载前不能提前输出 HTML、空格或 BOM。
- 文件路径可以是绝对路径,也可以是相对路径,但要确保 PHP 进程有读取权限。
跳转到文件
示例:
1 | $link = 'tupian.jpg'; |
如果 $link 来自用户输入,一定要做白名单或路径校验,避免开放重定向或任意文件访问问题。
本文早期发布于个人 CSDN 博客:查看原文