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

PHP登录表单登录成功后无法跳转至home.php页面求助

问题诊断与修复方案

嘿,我帮你找出了几个导致登录成功后无法正常显示home.php页面的关键问题,咱们一步步来修复:

1. 登录成功时Session变量赋值错误

在login.php里,当验证通过后你想把用户名存入Session,但你写的$_SESSION['username'] = $login_user;里的$login_user根本没定义啊!应该从查询返回的$row数组里取正确的用户名才对:

错误代码片段:

if(mysqli_num_rows($result) == 1) {
    $_SESSION['username'] = $login_user; // Initializing Session
    header("location: home.php"); // Redirecting To Other Page
}

修正后:

if(mysqli_num_rows($result) == 1) {
    $_SESSION['username'] = $row['username']; // 从查询结果里拿真实的用户名
    header("location: home.php");
    exit; // 这里还要加个终止,后面说原因
}

2. 跳转后没终止脚本执行

用header()跳转之后,PHP脚本不会自动停止运行,如果后面还有代码(哪怕是空的),偶尔会因为输出缓冲的问题导致跳转失效,所以一定要在header()后面加上exit;或者die();,确保脚本立刻终止,浏览器能正确跳转。

3. Check.php里的Session启动顺序错了

在check.php里,你先include了数据库连接文件,再启动Session,但session_start()必须在任何输出之前执行——如果connection.php里不小心有空格、换行或者echo输出,就会导致Session启动失败,进而home.php里拿不到用户信息。所以得把session_start();移到最顶部:

修正后的check.php开头:

<?php
session_start(); // 先启动Session,再做其他操作
include('connection.php');
$user_check=$_SESSION['username'];
// ... 剩下的代码不变

额外的安全提醒(非常重要!)

顺便提一句,你现在的代码有两个严重的安全漏洞:

  • SQL注入风险:直接把用户输入的用户名和密码拼进SQL语句,攻击者可以轻易篡改查询逻辑,窃取或破坏数据库数据;
  • 明文存储密码:直接存用户密码的明文,一旦数据库泄露,所有用户的账号都会直接被盗。

赶紧改成用password_hash()存密码,用password_verify()验证密码,再配合预处理语句防注入,给你个示例参考:

login.php里的查询部分可以改成这样:

// 替换原来的SQL查询
$stmt = $db->prepare("SELECT * FROM users WHERE username=?");
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();

// 验证密码(前提是你存的是哈希后的密码)
if($result->num_rows == 1 && password_verify($password, $row['password'])) {
    $_SESSION['username'] = $row['username'];
    header("location: home.php");
    exit;
} else {
    $error = "Incorrect username or password.";
}

把这些修正都加上之后,登录成功应该就能正常跳转到home.php,显示欢迎信息了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:26:04