发布于2026-04-19 阅读(0)
扫一扫,手机访问

PHP 的 header("Location: ...") 重定向失败通常是因为输出已发送(如空格、HTML、echo 或警告),导致 HTTP 头无法修改;必须确保在调用 header() 前无任何输出,并立即执行 exit 终止脚本。
PHP 的 `header("Location: ...")` 重定向失败通常是因为输出已发送(如空格、HTML、echo 或警告),导致 HTTP 头无法修改;必须确保在调用 `header()` 前无任何输出,并立即执行 `exit` 终止脚本。
在 PHP 中,header("Location: ...") 是最常用的服务器端重定向方式,但它对执行环境极为敏感——它必须在任何实际输出(包括空白字符、HTML、echo、print、甚至未捕获的 PHP 警告)发送到浏览器之前调用。一旦输出缓冲区被冲刷(或默认关闭缓冲时已有输出),HTTP 响应头便已发出,此时再调用 header() 将完全失效,并可能触发 “Headers already sent” 错误。
你遇到的问题——始终跳转到 ../../../login.php 而非预期的 coordinador-login.php——根本原因极可能是:
✅ 该重定向逻辑所在脚本上方存在不可见输出(例如:UTF-8 BOM、文件末尾多余换行、echo/var_dump() 调试语句、或前序包含文件中的空格);
✅ 或者,更常见的是:登录验证逻辑被嵌入了已输出 HTML 的页面中(如在 <html> 标签之后写 PHP 判断),导致 header() 调用时响应头早已锁定。
<?php
// ✅ 开头即启动会话(无任何前置空格/换行)
session_start();
// ✅ 数据库查询与验证逻辑(省略连接部分)
if ($row['idUsuario'] === $_POST['username']
&& $row['password'] === $_POST['password']
&& $row['nivel'] == 2) {
$_SESSION['sesion_coordinador'] = 'creada';
$_SESSION['coordinador'] = $id_usuario;
// ✅ 使用绝对路径(推荐)避免相对路径解析歧义
header('Location: /coordinador-login.php');
exit; // ✅ 强制终止脚本,防止后续代码执行
}
?>遵循以上原则,即可稳定、安全地实现登录后的精准跳转。
上一篇:哪种非遗技艺是用针在纸上绣画?
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8