You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署到服务器后PHP header首次跳转失效,登录后无法跳转到Dashboard.php

问题根因

  • session_start() 调用时机错误,且PHP发送header前不能有任何输出(包括空格、换行、include文件的输出),本地环境可能默认开启了输出缓冲配置,服务器环境未开启,因此重定向头无法正常发送
  • 调用header()重定向后没有加exit/die终止后续代码执行,后续逻辑可能覆盖已发送的重定向头
  • ob_start() 位置错误,放在了index.php的session判断逻辑内部,需要放在所有输出之前才会生效
  • 登录逻辑里的session_start()放在了循环内部,执行前可能已经产生输出内容,导致头信息发送失败

修复步骤

1. 修复index.php页首代码

ob_start()、session_start()必须放在所有代码最顶部,前面不能有任何输出(包括PHP标签外的空格、换行),修复后代码如下:

<?php
ob_start();
session_start();
include_once "includes/Functions.php";
if(isset($_SESSION['Name']))
{
    header("Location: Dashboard.php");
    exit();
}
?>

2. 修复登录逻辑代码

session_start()必须放在代码最顶部,重定向后加exit终止执行,不需要放在循环内部:

<?php
// 代码最顶部先启动session
session_start();

// 原有数据库查询逻辑保留,仅修改判断部分
if($result)
{
    if (mysqli_num_rows($result) > 0) {
        $rows = mysqli_fetch_assoc($result);
        $_SESSION['Id'] = $rows['user_Id'];
        $_SESSION['Name'] = $rows['Name'];
        header("Location: Dashboard.php");
        exit();
    }
}
?>

3. 额外检查项

  • 确认所有涉及重定向的PHP文件,<?php标签前没有任何空格、换行、UTF-8 BOM头
  • 确认引入的includes/Functions.php文件开头没有任何输出内容,没有提前发送header的逻辑

内容的提问来源于stack exchange,提问作者Rida Fatima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:36:04