PHP中如何从另一个页面获取用户名变量
解决方案:利用Session在final.php显示登录用户名
我完全理解你的困境——登录表单的提交按钮需要跳转到测验页面(quizzer.php),没法直接指向final.php,但你想在测验完成后的final.php页面显示用户的用户名对吧?其实你已经在代码里埋下了解决方案的伏笔,只需要做一点点调整就行!
问题所在
你现在在final.php里尝试用$_POST['username']获取用户名,但这个变量只存在于登录表单提交的请求里——而你的登录表单提交后是跳转到quizzer.php,不是final.php,所以到final.php时$_POST['username']是空的,自然显示不出来。
快速修复步骤
你在login.php里已经把登录成功的用户名存储到Session里了:$_SESSION['login_user'] = $username;,这才是跨页面共享用户信息的正确方式!只需要修改final.php的代码:
- 把
session_start()移到页面最顶部:确保在任何输出(包括include文件的输出)之前调用,避免"headers already sent"错误。 - 用Session变量替代POST变量:直接调用
$_SESSION['login_user']来显示用户名。
修改后的final.php代码如下:
<?php session_start(); // 移到最顶部,确保在任何输出之前 include 'database.php'; ?> <?php function visualizza($file) { $f = fopen($file, "r"); $content = fread($f, filesize($file)); fclose($f); // 修正:原代码中fclose在return之后永远不会执行,调整顺序避免资源泄漏 return $content; } ?> <html> <main> <div class="container"> <h2> Quiz Completato!</h2> <p> Congratulations <?php echo $_SESSION['login_user']; ?> ! You completed the test</p> <p>Final Score:<?php echo $_SESSION['score']; ?> </p> </div> </main> </html>
额外注意事项
- 所有需要访问Session变量的页面(包括quizzer.php),都要在页面最顶部调用
session_start(),这样Session才能在整个用户会话中保持有效。 - 登录失败的场景下,确保Session不会被错误赋值,这部分你的login.php已经处理好了,没问题。
这样修改后,不管用户从quizzer.php怎么跳转到final.php,只要登录状态有效,就能正确显示用户名了!
内容的提问来源于stack exchange,提问作者mark123
相关产品推荐
相关产品推荐

