当前位置:首页 > PHP

php实现修改密码

2026-02-16 11:52:04PHP

PHP 实现修改密码功能

修改密码功能通常涉及用户身份验证、旧密码验证、新密码设置及数据库更新。以下是实现步骤:

数据库准备

确保用户表包含密码字段(如 password),通常存储加密后的密码。示例表结构:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL
);

密码修改表单

创建 HTML 表单让用户输入旧密码和新密码:

php实现修改密码

<form action="change_password.php" method="post">
    <input type="password" name="old_password" placeholder="旧密码" required>
    <input type="password" name="new_password" placeholder="新密码" required>
    <input type="password" name="confirm_password" placeholder="确认新密码" required>
    <button type="submit">修改密码</button>
</form>

处理修改逻辑

change_password.php 中处理密码修改请求:

<?php
session_start();
require 'db_connection.php'; // 数据库连接文件

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $old_password = $_POST['old_password'];
    $new_password = $_POST['new_password'];
    $confirm_password = $_POST['confirm_password'];

    // 验证新密码是否一致
    if ($new_password !== $confirm_password) {
        die("新密码与确认密码不匹配");
    }

    // 获取当前用户信息(假设用户ID存储在session中)
    $user_id = $_SESSION['user_id'];
    $stmt = $pdo->prepare("SELECT password FROM users WHERE id = ?");
    $stmt->execute([$user_id]);
    $user = $stmt->fetch();

    // 验证旧密码
    if (!password_verify($old_password, $user['password'])) {
        die("旧密码错误");
    }

    // 更新密码
    $hashed_password = password_hash($new_password, PASSWORD_DEFAULT);
    $update_stmt = $pdo->prepare("UPDATE users SET password = ? WHERE id = ?");
    $update_stmt->execute([$hashed_password, $user_id]);

    echo "密码修改成功";
}
?>

安全注意事项

  1. 密码哈希:始终使用 password_hash()password_verify() 处理密码。
  2. 输入验证:检查新密码长度和复杂度(如至少8位,包含字母和数字)。
  3. CSRF防护:添加 CSRF 令牌防止跨站请求伪造。
  4. HTTPS:确保表单通过 HTTPS 提交,避免密码明文传输。

完整示例扩展

如需增强安全性,可在表单中添加 CSRF 令牌:

php实现修改密码

// 生成令牌并存入session
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));

表单中增加隐藏字段:

<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">

处理时验证令牌:

if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die("无效的CSRF令牌");
}

标签: 修改密码php
分享给朋友:

相关文章

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUEST_…

php 无限分类的实现

php 无限分类的实现

无限分类的实现方法 无限分类通常用于构建树形结构数据,如商品分类、多级菜单等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 邻接列表是最简单的实现方式,通过在每个节点中存…

php 实现面包屑导航

php 实现面包屑导航

实现面包屑导航的方法 面包屑导航(Breadcrumb Navigation)是一种常见的网站导航方式,用于显示用户当前页面的路径。以下是几种在 PHP 中实现面包屑导航的方法。 基于 URL 路径…