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

页面重定向后脚本仍执行?PHP header跳转异常求助

重定向后PHP脚本仍执行后续代码的原因及解决办法

问题场景

在dashboard.php中编写了以下代码:

mail('xxx@gmail.com', 'Dashboard 1', 'isLoggedin = ' . $isLoggedIn);

if(!$isLoggedIn) {
  header("Location: https://example.com/account/login.php");
}

mail('xxx@gmail.com', 'Dashboard 2', 'Dashboard 2');

逻辑要求未登录用户访问该页面时会被重定向到登录页,但实际测试出现以下不符合预期的情况:

  • 收到第一封邮件(isLoggedin为空,符合预期)
  • 成功重定向到login.php(符合预期)
  • 收到第二封Dashboard 2邮件(不符合预期)

原因分析

header("Location: ...")的作用只是向浏览器发送一个HTTP重定向的响应头,并不会立即终止当前PHP脚本的执行。浏览器收到重定向指令后会跳转,但服务器上的dashboard.php脚本会继续执行完剩余代码,所以后续的mail()函数依然会被调用。

解决办法

在发送重定向头之后,立刻调用exit()或die()函数终止脚本执行,这样后续代码就不会被运行了。修改后的代码如下:

mail('xxx@gmail.com', 'Dashboard 1', 'isLoggedin = ' . $isLoggedIn);

if(!$isLoggedIn) {
  header("Location: https://example.com/account/login.php");
  exit; // 或 die();
}

mail('xxx@gmail.com', 'Dashboard 2', 'Dashboard 2');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:22:02