如何在多页面间安全持久地传递表单数据

阿瑶小哥_4362

阿瑶小哥_4362

2026-06-12

300人浏览

原创

如何在多页面间安全持久地传递表单数据

本文讲解如何解决php表单提交后无法跨页面(如返回首页)持续访问用户登录数据的问题,重点介绍使用session存储认证状态的正确实践,并修复sql注入与逻辑缺陷。

本文讲解如何解决php表单提交后无法跨页面(如返回首页)持续访问用户登录数据的问题,重点介绍使用session存储认证状态的正确实践,并修复sql注入与逻辑缺陷。

在您的当前实现中,homepage.php 直接依赖 $_POST 数据——但该超全局变量仅在表单提交瞬间存在。当用户点击导航链接(如“Home”按钮)重新请求 homepage.php 时,请求方式变为 GET,$_POST 为空,导致未定义索引错误甚至数据库查询失败。这不是前端 Cookie 或 JavaScript 能根本解决的问题;核心在于服务端状态管理的设计缺失。

✅ 正确做法是:登录成功后,将关键用户信息存入 $_SESSION,并在所有受保护页面中通过 Session 读取和验证身份。

以下是重构后的完整方案:

幻舟AI
幻舟AI

一款AI视频创作工具,主要用于专为短片创作者打造的AI创作平台,适合需要提升相关任务效率的用户。

下载

1. 登录处理页(如 login_process.php)

<?php session_start();
require 'dbconnect.php';

// 防止直接访问
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('Location: index.php');
    exit;
}

$uname = trim($_POST['username'] ?? '');
$pword = $_POST['password'] ?? '';

// ✅ 使用预处理语句防止 SQL 注入(强烈推荐)
$stmt = $conn->prepare("SELECT id, username, email FROM tbl_users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $uname, $pword);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows === 1) {
    $user = $result->fetch_assoc();
    // ✅ 将必要信息存入 Session(避免存储密码!)
    $_SESSION['user_id'] = $user['id'];
    $_SESSION['username'] = $user['username'];
    $_SESSION['logged_in'] = true;

    header('Location: homepage.php');
    exit;
} else {
    echo "<script>alert('登录失败:用户名或密码错误'); location.href='index.php';</script>";
}
?>

2. homepage.php(安全读取 Session)

<?php session_start();

// ? 强制登录校验
if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) {
    header('Location: index.php');
    exit;
}

require 'dbconnect.php';
// ✅ 此处无需重复查库——用户身份已由 Session 保证
$username = htmlspecialchars($_SESSION['username']);
?><title>主页</title><nav><ul>
<li><a href="logout.php"><b>退出登录</b></a></li>
        <li><a href="SlrSystem.html"><b>太阳系</b></a></li>
        <li><a href="about-us.php"><b>关于我们</b></a></li>
        <li><a href="homepage.php"><b>首页</b></a></li>
    </ul></nav><div class="home">
    <h1 class="right"><b>EXPLORE<br></b></h1>
    <h1 class="left"><b>THE GALAXY FROM<br></b></h1>
    <h1 class="right"><b>YOUR COUCH</b></h1>
</div>

3. logout.php(安全注销)

<?php session_start();
$_SESSION = []; // 清空全部 Session 数据
session_destroy(); // 销毁 Session 文件
setcookie(session_name(), '', time() - 3600, '/'); // 清除客户端 Session Cookie
header('Location: index.php');
exit;
?>

⚠️ 重要注意事项:

  • ❌ 切勿在 SQL 查询中拼接 $_POST 原始数据(您原代码存在严重 SQL 注入漏洞);
  • ❌ 不要依赖 $_POST 跨页面传递业务数据——它不具备持久性;
  • ✅ Session 是 PHP 官方推荐的服务器端状态管理机制,天然支持多页面共享;
  • ✅ 所有敏感页面(如 homepage.php)必须前置 session_start() 和登录态校验;
  • ✅ 生产环境应使用 password_hash()/password_verify() 替代明文密码存储。

通过以上改造,用户登录后无论点击多少次“Home”,只要 Session 有效,即可稳定访问主页并显示个性化内容——这才是健壮、安全、符合 Web 开发规范的解决方案。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

6455

7

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

3612

4

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

3270

5

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.01

3299

5

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2023.08.11

4979

6

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

2023.08.11

3241

3

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

3049

3

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

2023.09.01

2668

6

HTML嵌入CSS样式的方法
HTML嵌入CSS样式的方法

HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.20

2768

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习