PHP页面报错重定向次数过多无法正常工作,如何排查代码问题?
问题根因
- 循环重定向核心触发逻辑:若该段代码放置在
index.php中,已登录用户访问首页时会持续触发header('location:index.php')跳转,形成无限重定向循环。 - 代码语法缺陷:
$_SESSION['loggedin'] == "false"使用比较运算符而非赋值运算符,该行无实际业务作用。 - 重定向未终止执行:调用header跳转后未添加
exit/die语句,后续代码仍会执行,可能引发逻辑异常。 - 缺少session初始化:若代码开头未调用
session_start(),会导致$_SESSION变量无法正常读取,触发逻辑判断错误。
修复代码
根据业务场景调整跳转判断,仅非首页的已登录用户触发跳转即可:
// 代码开头必须先启动session,否则$_SESSION无法正常读写 session_start(); // 获取当前运行的页面文件名 $current_page = basename($_SERVER['PHP_SELF']); if (isset($_SESSION['loggedin'])) { if ($_SESSION['loggedin'] == null || $_SESSION['loggedin'] == "false") { // 修正为赋值运算符 $_SESSION['loggedin'] = "false"; } elseif ($_SESSION['loggedin'] == "true" && $current_page !== 'index.php') { // 仅非首页的已登录用户才跳转至首页,跳转后终止后续代码执行 header('Location: index.php'); exit(); } }
如果该段代码仅用于登录页校验,可直接将判断条件改为当前页面是登录页时才触发跳转,逻辑同理。
内容的提问来源于stack exchange,提问作者Colin Rice
相关产品推荐
相关产品推荐

