在 PHP 中,实现页面跳转(Redirect)常见有 3 种方式。下面我按使用频率 + 实际场景给你讲清楚,每种都附 可直接用的代码示例 👇
一、方式一:header() 跳转(最常用 ✅)
示例代码
<?php
header("Location: https://www.example.com");
exit;
带状态码(推荐)
header("Location: /login.php", true, 302);
exit;
常见状态码
| 状态码 | 含义 |
|---|---|
| 302 | 临时跳转(默认) |
| 301 | 永久跳转(SEO 用) |
| 303 | POST 后跳转 |
header("Location: /success.php", true, 303);
exit;
注意事项(非常重要)
❗ 必须在 任何输出之前
❗ 一定要 exit
❗ 不适用于已经输出 HTML 的情况
二、方式二:JavaScript 跳转(前端跳转)
示例代码
<?php
echo "<script>window.location.href='https://www.example.com';</script>";
延时跳转
echo "<script>
setTimeout(function(){
location.href = 'success.php';
}, 3000);
</script>";
适用场景
- 已经输出页面
- 需要提示后跳转
- 用户可见的交互跳转
三、方式三:HTML Meta Refresh 跳转
示例代码
<?php
echo '<meta http-equiv="refresh" content="0;url=success.php">';
延时跳转
echo '<meta http-equiv="refresh" content="5;url=success.php">';
echo '5 秒后跳转...';
特点
| 优点 | 缺点 |
|---|---|
| 简单 | SEO 不友好 |
| 可延时 | 用户体验一般 |
| 不受 header 限制 | 依赖浏览器 |
四、三种方式对比(速查表)
| 方式 | 是否推荐 | 适合场景 |
|---|---|---|
| header() | ⭐⭐⭐⭐⭐ | 后端逻辑跳转 |
| JavaScript | ⭐⭐⭐⭐ | 已输出页面 |
| Meta Refresh | ⭐⭐ | 兜底方案 |
五、常见错误(新人最容易踩)
❌ 错误 1:header 前有输出
echo "hello";
header("Location: /index.php"); // 无效
❌ 错误 2:忘记 exit
header("Location: /index.php");
// 后面的代码还会执行!
六、实战示例:登录判断跳转
if (!isset($_SESSION['user'])) {
header("Location: login.php");
exit;
}
echo "欢迎登录";
七、一句话总结
能用
header()就用header();已经输出了内容,再用 JS 或 Meta