PHP header()
header()是PHP的一个预定义网络函数,它向客户端发送一个原始的HTTP头。关于header()函数的一个重要注意点是,它必须在发送任何实际输出之前调用。
header()函数以原始形式将HTTP头发送给客户端或浏览器。在发送任何其他输出之前,HTTP函数会操作Web服务器发送给客户端或浏览器的信息。
语法
void header (string header, booleanreplace = TRUE, int $http_response_code)
参数
header()函数接受三个参数,下面会详细讨论:
$header(必需)
header参数包含要发送的头字符串。这个函数有两种特殊的头调用方式。
第一个头以”HTTP/”为开头,指定要发送的HTTP状态码。
第二种特殊情况的头以”Location:”为开头。它不仅将头发送回浏览器,还会向浏览器提供REDIRECT(302)状态码,直到已经设置了201或3xx状态码。
$replace(可选)
此参数用于指定是否应该用头替换先前的相同头,还是添加另一个相同类型的头。$replace是一个布尔类型的可选参数。
默认值是TRUE,这意味着它替换先前的相同头。但如果作为第二个参数传递FALSE,则可以绑定多个相同类型的头。
http_response_code(可选)
$http_response_code是一个可选参数,可以强制将HTTP响应代码设置为指定的值。
注意:如果头不为空,http_response_code参数会产生效果。
返回值
PHP的header()函数不返回任何值。
变更
在PHP版本5.1.2之后,为了防止头注入攻击,该函数停止发送多个头。它每次只允许发送一个头。
用途
- 它改变页面位置。
- 它设置时区。
- 它发送STOP状态。
- 此函数设置缓存控制。
- 它启动强制下载。
示例
通过下面的示例,您可以了解header()函数在运行时环境中的实际工作。
示例1:重定向浏览器
以下代码将重定向用户到另一个页面。
<?php
// This will redirect the user to the new location
header('Location: http://www.javatpoint.com/');
//The below code will not execute after header
exit;
?>
输出
它将重定向到上面程序中header()函数给定的新URL位置,即, www.javatpoint.com 。如果在header()函数之后写入任何代码,则不会执行。
示例2:重定向间隔
以下代码将会在 10秒 后 重定向 用户到另一个页面。
<?php
// This will redirect after 10 seconds
header('Refresh: 10; url = http://www.javatpoint.com/');
exit;
?>
输出
The output will be same as the example 1, but it will take 10 seconds to load.
注意:header()函数之后的任何代码都不会执行。
示例3:不缓存页面
通过使用以下代码,您可以阻止浏览器缓存页面。
<?php
// PHP program to describes header function
// Set a past date
header("Expires: Tue, 03 March 2001 04:50:34 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
?>
<html>
<body>
<p>Hello Javatpoint!</p>
<!-- PHP program to display
header list -->
<?php
print_r(headers_list());
?>
</body>
</html>
输出
Hello Javatpoint!
Array (
[0] => X-Powered-By: PHP/7.3.13
[1] => Expires: Tue, 03 March 2001 04:50:34 GMT
[2] => Cache-Control: no-cache
[3] => Pragma: no-cache
)
绝对URI
一些较旧的客户端需要绝对URI,其中包括主机名、方案和绝对路径,而大多数现代客户端接受相对URI作为 Location 的参数。要创建绝对URI,您可以使用 $SERVER[‘PHP_SELF’] , $SERVER[‘HTTP_HOST’] 和dirname()。
示例4
创建两个PHP文件,其中一个文件包含标题文件的代码,另一个文件在浏览器中重定向到一个新页面。
headercheck.php
<?php
host =_SERVER['HTTP_HOST'];
uri = rtrim(dirname(_SERVER['PHP_SELF']), '/\\');
newpage = 'welcome.php';
/* Redirect to a different page requested in the current directory*/
header("Location: http://hosturi/newpage");
exit;
?>
welcome.php
<!-- welcome.php file redirect to new page -->
<html>
<head>
<title> Welcome page </title>
</head>
<body>
<h1> <center> Welcome to javaTpoint </center> </h1>
</body>
</html>
输出