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

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的代码:

  1. 把session_start()移到页面最顶部:确保在任何输出(包括include文件的输出)之前调用,避免"headers already sent"错误。
  2. 用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:17:56