当前位置: 首页> 最新文章列表> 使用 PHP header 函数实现网页重定向的方法,如何快速跳转到新页面?

使用 PHP header 函数实现网页重定向的方法,如何快速跳转到新页面?

gitbox 2025-08-07

在 Web 开发中,网页重定向是一种常见的操作,例如用户登录后跳转到个人中心页,或者旧页面迁移到新地址。PHP 提供了简单而直接的方式来实现这一功能,即使用 header() 函数发送 HTTP 头信息,从而通知浏览器跳转到新的页面。

一、基本语法

PHP 的 header() 函数可以用来发送原始的 HTTP 报文头部信息,其语法如下:

<span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$header</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$replace</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$response_code</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>);
</span></span>

用于重定向时,常见的形式如下:

<span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: https://www.example.com'</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;
</span></span>

这里 Location 是一个特殊的 HTTP 头,用于指示浏览器跳转到另一个 URL。调用 exit 是为了确保 PHP 不继续执行后续代码,防止意外输出或逻辑错误。

二、常见的使用场景

1. 登录后跳转

<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$login_success</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: /dashboard.php'</span></span><span>);
    </span><span><span class="hljs-keyword">exit</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"用户名或密码错误。"</span></span><span>;
}
</span></span>

2. 表单提交成功后跳转

<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REQUEST_METHOD'</span></span><span>] === </span><span><span class="hljs-string">'POST'</span></span><span>) {
    </span><span><span class="hljs-comment">// 处理表单</span></span><span>
    </span><span><span class="hljs-comment">// ...</span></span><span>

    </span><span><span class="hljs-comment">// 重定向到感谢页面</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: /thank-you.php'</span></span><span>);
    </span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span></span>

3. 防止表单重复提交(Post/Redirect/Get 模式)

表单提交后使用 header() 进行跳转,可以有效防止刷新页面时重复提交数据:

<span><span><span class="hljs-comment">// 保存数据后跳转</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: /success.php'</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;
</span></span>

三、注意事项

  1. header 必须在任何输出前调用
    一旦页面有输出(如 echo、HTML 标签或空格),再使用 header() 将会报错:“Cannot modify header information”。可以通过 ob_start() 开启输出缓冲区来避免这一问题。

  2. 使用绝对路径更安全
    虽然可以使用相对路径,如 Location: dashboard.php,但推荐使用绝对路径或完整 URL,以避免路径错误。

  3. 结合 HTTP 状态码使用
    可通过 header() 的第三个参数设置 HTTP 状态码,例如:

    <span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: /new-page.php'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-number">301</span></span><span>); </span><span><span class="hljs-comment">// 永久重定向</span></span><span>
    </span></span>

    状态码含义如下:

    • 301:永久重定向

    • 302:临时重定向(默认)

    • 303:推荐用于表单提交后的跳转

四、总结

使用 header('Location: ...') 是 PHP 实现网页跳转最直接有效的方法,掌握它可以让你轻松处理页面导航、状态转移和用户体验的优化。在实际项目中,配合合适的业务逻辑与 HTTP 状态码,可以实现更符合 Web 标准的重定向策略。