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

PHP跨页面获取username变量报错:Undefined index: username如何解决?

解决PHP中Undefined index: username的问题

你遇到的这个错误是因为$_POST['username']只在表单提交的单次请求里有效,当你跳转到final.php时,这是一个全新的HTTP请求,$_POST数组里已经没有username这个键了,所以会抛出未定义索引的提示。

好在你已经在使用$_SESSION存储分数了,我们可以用同样的方式来保存用户名,跨页面调用就不会有问题了,具体修改步骤如下:

第一步:在登录验证时将用户名存入Session

找到你的login.php文件(登录页里include的那个),在验证用户名和密码成功的代码块里,添加一行代码把用户名存入Session:

// 假设这是login.php里验证通过后的代码
$_SESSION['login_user'] = $username; // $username是你从表单获取到的用户名变量

注意:如果login.php里还没调用session_start(),一定要在文件最开头加上session_start();,否则Session无法正常工作。

第二步:修改final.php获取用户名的方式

把final.php里用$_POST['username']的代码改成从Session里取:

<p>Congratulations <?php echo $_SESSION['login_user']; ?> ! You completed the test</p>

另外,要确保session_start()在final.php的最顶部调用,不能有任何HTML输出或者echo在它前面,所以调整你的代码顺序:

<?php 
session_start(); // 移到最前面,确保在任何输出之前执行
include 'database.php'; 
?>
<?php function visualizza($file) { 
    $f = fopen($file, "r"); 
    $content = fread($f, filesize($file));
    fclose($f);
    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>

小提示:你的原visualizza函数里,fclose($f)写在return之后,这行代码永远不会被执行到,会导致文件资源无法正常释放,上面的代码已经帮你调整了位置。

这样修改后,final.php就能正常显示登录的用户名了,也不会再出现Undefined index的错误啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:09:13