什么是header函数?
header() 函数是 PHP 的一个内置函数,用于发送原始 HTTP 标头。HTTP 头允许服务器传递额外的信息,例如可以实现在页面输出前,强制浏览器下载某个文件的效果。
header函数语法
header( string header, bool replace = true, int http_response_code = 0 )
其中,header 表示要发送的 HTTP 标头字符串,replace 表示这个 header 是覆盖之前的 header 还是追加设置,在默认情况下,即 replace=true,表示如果该标头已经设置,用新的标头替换它;http_response_code 表示自定义的响应状态码。
使用header函数实现跳转
如果希望在 PHP 中实现页面跳转,可以使用 header 函数中的 location 选项来实现:
header("Location: http://www.example.com/");
exit;
注意,header 函数必须在任何实际输出之前(注意空格和换行符等非实际输出),因为该函数将改变头信息。
同时,为避免出现错误信息,我们通常使用 exit 或 die 函数来中断代码的执行。
在header设置cookies
在 header 函数中还可以设置 cookie。 cookie 是一种在客户端保存信息的技术,其允许服务器端向客户端发送少量数据,比如用户 ID 等。此后,每当客户端再访问该站点时,都会自动携带该 cookie 数据,供服务器端来识别客户端状态或进行自动登录等操作。
使用 header 函数来设置 cookie,可以使用如下语法:
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
可以看到,其中 setcookie (全部小写)是 PHP 自带的一个函数,用于设置 cookie。本例中,首先设置了要保存的 cookie 名称和值,由于本例是为了模拟真实使用场景,所以设置了该 cookie 的有效期为 30 天后过期。
这样,如果浏览器保存了这个 cookie,可能会在发送 HTTP 请求中自动带上 ../../../old.html:
if(isset($_COOKIE["user"])) {
echo "Welcome " . $_COOKIE["user"] . "!";
} else {
echo "Hello guest!";
}
在实际应用中,cookie 被保存在客户端,所以 PHP 脚本不会立刻获取到它。但是,可以在第二页调用上面的脚本,因为第二页会获取浏览器缓存中的 cookie。