您的位置:

PHP header跳转详解

一、header跳转的作用

header函数是用来发送HTTP头的,通常用于服务端跳转和cookie处理。在服务端跳转时,header函数可以向客户端发送HTTP状态码和其他相关的HTTP头部信息,从而引导客户端加载新的资源。常见的服务端跳转有三种:

  1. 301 Moved Permanently(永久重定向)
  2. 302 Found(临时重定向)
  3. 303 See Other(其它位置)

下面展示三种header跳转的代码:

//301 Moved Permanently
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.example.com/new_page.php");

//302 Found
header("HTTP/1.1 302 Found");
header("Location: http://www.example.com/new_page.php");

//303 See Other
header("HTTP/1.1 303 See Other");
header("Location: http://www.example.com/new_page.php");

二、header跳转的优缺点

header跳转有其优点和缺点,在开发时需根据场景权衡利弊。

优点:

  • 服务端跳转,搜索引擎友好,有利于SEO
  • 跳转速度快,相对于前端页面跳转更快

缺点:

  • 无法传递POST数据,GET数据可以通过URL传递
  • 使用header跳转可能会将cookie信息丢失
  • 跳转后URL地址改变,可能导致用户体验差

三、header跳转的应用场景

header跳转不适用于所有场景,需谨慎使用。下面介绍一些常见应用场景。

重定向404页面

当用户请求不存在的页面时,服务端可以使用header跳转到自定义的404页面。下面是一个例子:

// PHP代码
header("HTTP/1.1 404 Not Found");
header("Location: http://www.example.com/404.html");

表单提交后跳转

常见的表单提交后跳转有两种方式:

  1. 在服务端处理完表单数据后跳转到一个新的页面,告诉用户提交成功或失败
  2. 使用Ajax表单提交,成功则在前端进行处理,失败则在前端显示错误信息及原因

在服务端处理完表单数据并跳转到新的页面时,可以使用header跳转实现。以下是一个例子:

if ($form_data_is_valid) {
  header("Location: http://www.example.com/success.php");
  exit;
} else {
  header("Location: http://www.example.com/error.php");
  exit;
}

页面间跳转

页面间跳转是常见的应用场景。例如,用户点击导航栏中的链接时,跳转到指定的页面。以下是一个例子:

// HTML代码
<a href="http://www.example.com/about.php">关于我们</a>

当用户点击该链接时,浏览器会向服务端发送一个带有请求的HTTP头,服务端可以使用header跳转到指定页面。

四、header跳转时需要注意的问题

在使用header跳转时,需要注意以下问题,以避免潜在的安全隐患和错误。

header函数必须在页面输出内容之前调用

header函数会向浏览器发送HTTP头部,因此必须在页面输出内容之前调用。如果在输出内容后调用header函数,则会提示错误“Cannot modify header information - headers already sent by...”。

不要忘记exit函数

在使用header跳转时,一定要记得使用exit函数终止脚本的执行。

header("Location: http://www.example.com/new_page.php");
exit;

不要在header跳转前输出任何内容

在header跳转前不应输出任何内容,包括HTML标签等。如果已经输出,则会提示错误“Cannot modify header information - headers already sent by...”。

总结

header跳转是服务端跳转的一种方式,可以在服务端进行页面跳转和cookie处理。使用header跳转需要注意几个关键问题,例如不要在输出内容后调用header函数、使用exit函数终止脚本执行,以及不要在header跳转前输出任何内容。

header跳转的应用场景包括重定向404页面、表单提交后跳转和页面间跳转等。在应用场景中,需根据具体情况权衡利弊,选择合适的跳转方式。