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

PHP登录后跳转页面无法显示对应用户名问题排查求助

代码问题分析

1. 表单提交目标不匹配

你的HTML表单action属性配置的是INDEX.PHP,但你编写的登录校验逻辑存放在LOGIN.PHP中,用户提交表单根本不会触发你写的校验规则,首先需要把form的action属性改为LOGIN.PHP。

2. 变量无法跨页面传递

HTTP请求本身是无状态的,你在LOGIN.PHP里定义的$username是当前请求的局部变量,执行header跳转后,当前请求的所有临时变量都会被销毁,跳转后的no_error.php完全拿不到这个变量的值。

3. 缺少登录态持久化机制

你没有使用Session、Cookie或者参数传递的方式把用户名同步到跳转后的页面,目标页面的$username属于未定义变量,自然无法正常输出。

修复方案

步骤1:修正表单提交地址

修改HTML表单的action属性:

<form action="LOGIN.PHP" method="POST" class="two">
    <!-- 其余表单内容保持不变 -->
</form>

步骤2:用Session存储用户名(推荐,安全性更高)

修改LOGIN.PHP,顶部开启Session,校验通过后将用户名存入Session:

<?php 
// 代码最顶部先开启Session
session_start();
if(isset($_POST['submit'])){
    $post_username = $_POST['username'];
    $username = '';
    if ($post_username === "01234567891012"){
        $username = "PISHOY";
    }
    elseif ($post_username === "01234567891013"){
        $username = "HANY";
    }
    elseif ($post_username === "01234567891014"){
        $username = "ALI";
    }
    elseif ($post_username === "01234567891015"){
        $username = "PISH";
    }
    else{
        header("Location: error.php");
        exit;
    }
    // 校验通过后把用户名存入Session
    $_SESSION['username'] = $username;
    header('Location: no_error.php');
    exit;
}
?>

步骤3:修改目标页面代码,从Session中读取用户名

跳转后的no_error.php页面顶部也需要开启Session,再输出对应的用户名:

<div id="true"><?php
session_start();
include 'index_p.php';
// 先判断Session是否存在,避免出现未定义报错
echo "HELLO " . ($_SESSION['username'] ?? '访客');
?></div>

临时替代方案:跳转时通过URL参数传递(不推荐,明文可见可篡改)

如果不想使用Session,也可以在跳转时把用户名拼在URL参数中,LOGIN.PHP里的跳转代码修改为:

header('Location: no_error.php?username=' . urlencode($username));

目标页面取值逻辑改为:

echo "HELLO " . ($_GET['username'] ?? '访客');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 04:27:05