Azure PHP Web App登录后未跳转至目标页面 故障排查咨询
Azure 平台PHP Web App登录跳转异常解决方案
- 首先排查会话初始化问题:PHP使用
$_SESSION全局变量前必须调用session_start()方法,且该方法需要放在所有代码输出(包括空格、HTML标签、BOM头)的最前面。你当前贴出的代码未包含会话初始化逻辑,请检查user_register_login.php头部是否添加该方法,若没有则在当前PHP代码的第一行补充session_start()。 - 补充跳转终止逻辑:
header('Location:xxx')执行后如果没有终止后续代码运行,PHP会继续输出当前页面的HTML内容,Azure默认PHP配置下会直接忽略已产生输出后的跳转指令。请在每一行header跳转代码后新增exit;终止程序执行。 - 排查输出缓冲配置问题:如果你的代码在
header执行前已经有输出内容(比如include文件的前置空格、PHP警告提示),可在代码最顶部添加ob_start();开启输出缓冲,临时规避输出前置导致的跳转失效问题,也可在Azure Web App的配置面板中修改PHP的output_buffering参数为开启状态。 - 验证会话赋值逻辑:在当前的
if判断前添加临时调试代码var_dump($_SESSION);exit;,提交登录请求后查看输出的loggedin和usertype参数是否符合预期,排查是否是user_register_login.php中的登录验证逻辑未正确给会话赋值,导致跳转判断条件永远不触发。 - 检查表单提交逻辑完整性:你贴出的表单代码仅包含用户名输入项,请确认完整表单包含密码输入框、提交按钮,且
user_register_login.php中存在对应处理POST请求的登录校验逻辑,排除登录请求根本未被正确处理的问题。
修改后的参考代码:
<?php // 无任何前置空格/输出 ob_start(); session_start(); include 'user_register_login.php'; if (isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true) { if ($_SESSION["usertype"] == 3) { header('Location: user.php'); exit; } else { header('Location: moduleManage.php'); exit; } } ?> <form class="form-group" method="post" name="user_login_submit" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" autocomplete="off" id="user_login"> <input type="text" placeholder="Username" class="Uname" value="<?php echo $Lusername ?>" name="Lusername" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off /><span class="error"><?php echo $LusernameErr; ?></span><br></br> <!-- 补充密码输入框、提交按钮代码 --> </form>
内容的提问来源于stack exchange,提问作者uday Deepu
相关产品推荐
相关产品推荐

