本文详解 php 登录后 `header("location: ...")` 失效的常见原因及解决方案,重点解决因输出缓冲、多余空白、未终止脚本等导致的重定向失败问题,并提供安全、健壮的登录跳转实践。
在 PHP Web 开发中,登录成功后使用 header("Location: welcome.php"); 进行页面跳转是最常用的方式,但许多开发者会遇到“明明执行了 header 却毫无反应,页面停留在原地”的问题。根本原因在于:HTTP 头信息(Header)必须在任何实际输出(HTML、空格、换行、echo、print 等)发送到浏览器之前设置完毕。一旦有任意字符(包括 html> 标签前的换行、?>
将多个 PHP 块合并为一个连续块,避免 ?>
会输出,破坏重定向
} else {
$error = "
@@##@@
您的用户名或密码不正确
返回首页
";
}
}
?>
Login Page
Login
if (headers_sent($file, $line)) {
die("Headers already sent in $file on line $line");
}error_reporting(E_ALL); ini_set('display_errors', 1);遵循以上规范,即可彻底解决登录后跳转失败问题,同时大幅提升应用安全性与可维护性。