it编程 > 编程语言 > Php

基于PHP实现密码管理工具

133人参与 2024-11-25 Php

该文档详细描述了实现一个简单的密码管理工具的过程,工具基于php和mysql构建,支持用户注册、密码存储、管理以及角色权限控制等核心功能。

系统架构设计

技术栈:php(后端逻辑)、mysql(数据存储)、bootstrap(前端样式)

数据存储:用户表(users)和密码表(passwords)存储用户的基本信息和其管理的密码信息,包含外键关联实现级联删除。

权限控制:通过session会话管理用户角色,确保不同角色的访问权限。

数据库配置和安装流程

1. 数据库配置

为了便于初次安装用户配置数据库信息,工具提供了安装页面(install.php)来接收并初始化数据库参数和管理员账户。

<?php
if ($_server['request_method'] == 'post') {
    $db_host = $_post['db_host'];
    $db_user = $_post['db_user'];
    $db_pass = $_post['db_pass'];
    $db_name = $_post['db_name'];
 
    // 连接数据库并创建数据库
    $conn = new mysqli($db_host, $db_user, $db_pass);
    if ($conn->connect_error) {
        die("连接失败: " . $conn->connect_error);
    }
    $conn->query("create database if not exists $db_name");
    $conn->select_db($db_name);
 
    // 创建用户和密码表
    $sql_users = "create table if not exists users (
        id int auto_increment primary key,
        username varchar(50) not null,
        password varchar(255) not null,
        role enum('admin', 'user') default 'user'
    )";
 
    $sql_passwords = "create table if not exists passwords (
        id int auto_increment primary key,
        user_id int,
        platform_name varchar(100),
        platform_address varchar(255),
        account varchar(100),
        password varchar(255),
        foreign key (user_id) references users(id) on delete cascade
    )";
    
    $conn->query($sql_users);
    $conn->query($sql_passwords);
    
    // 创建管理员账户
    $admin_username = $_post['admin_username'];
    $admin_password = password_hash($_post['admin_password'], password_bcrypt);
    $conn->query("insert into users (username, password, role) values ('$admin_username', '$admin_password', 'admin')");
    
    // 将数据库配置写入文件
    $config_content = "<?php\n"
        . "\$db_host = '$db_host';\n"
        . "\$db_user = '$db_user';\n"
        . "\$db_pass = '$db_pass';\n"
        . "\$db_name = '$db_name';\n"
        . "\$conn = new mysqli(\$db_host, \$db_user, \$db_pass, \$db_name);\n"
        . "if (\$conn->connect_error) {\n"
        . "    die(\"连接失败: \" . \$conn->connect_error);\n"
        . "}\n";
    
    file_put_contents('config.php', $config_content);
    
    echo "<div class='alert alert-success'>安装成功!</div>";
}
?>

在 install.php 文件中,定义了数据库连接及初始化代码,接受表单输入并写入配置文件 config.php,用于后续的数据库访问。

用户身份验证与会话管理

用户登录和权限管理通过session实现。登录页面login.php验证用户身份并开启会话,将用户id和角色写入会话变量,以便后续操作中使用。

用户登录 (login.php)

<?php
session_start();
include 'db.php';
 
if ($_server['request_method'] == 'post') {
    $username = $_post['username'];
    $password = $_post['password'];
 
    $result = $conn->query("select * from users where username='$username'");
    if ($result->num_rows > 0) {
        $user = $result->fetch_assoc();
        if (password_verify($password, $user['password'])) {
            $_session['user_id'] = $user['id'];
            $_session['role'] = $user['role'];
            header('location: dashboard.php');
            exit;
        }
    }
    echo "<div class='alert alert-danger'>用户名或密码错误!</div>";
}
?>

登录验证流程:

管理员页面和用户管理

管理员页面(admin.php)提供用户的增删改功能,管理员角色控制通过会话变量实现。此页面仅限role='admin'的用户访问。

用户管理 (admin.php)

<?php
session_start();
include 'db.php';
 
if (!isset($_session['user_id']) || $_session['role'] !== 'admin') {
    header('location: login.php');
    exit;
}
 
// 添加用户
if ($_server['request_method'] == 'post' && isset($_post['action']) && $_post['action'] == 'add') {
    $username = $_post['username'];
    $password = password_hash($_post['password'], password_bcrypt);
    $role = $_post['role'];
    $conn->query("insert into users (username, password, role) values ('$username', '$password', '$role')");
}
 
// 删除用户
if ($_server['request_method'] == 'post' && isset($_post['action']) && $_post['action'] == 'delete') {
    $userid = intval($_post['user_id']);
    $result = $conn->query("select role from users where id=$userid");
    $user = $result->fetch_assoc();
    if ($user && $user['role'] !== 'admin') {
        $conn->query("delete from users where id=$userid");
    }
}
?>

管理员页面支持:

添加用户:从表单获取用户名、密码、角色信息,进行哈希加密存储。

删除用户:基于用户id执行删除操作,仅允许删除非管理员用户。

密码管理

主页面(dashboard.php)实现用户的密码管理功能,包括密码的添加、删除、修改和搜索等操作。每个密码条目包含平台名称、平台地址、账号和密码。

添加密码

用户通过表单提交密码条目,包括平台名称、地址、账号和密码,数据存储在 passwords 表中。

if ($_server['request_method'] == 'post' && isset($_post['add_password'])) {
    $platform_name = $_post['platform_name'];
    $platform_address = $_post['platform_address'];
    $account = $_post['account'];
    $password = $_post['password'];
    $conn->query("insert into passwords (user_id, platform_name, platform_address, account, password) values ('$user_id', '$platform_name', '$platform_address', '$account', '$password')");
}

删除密码

if (isset($_get['delete_id'])) {
    $delete_id = $_get['delete_id'];
    $conn->query("delete from passwords where id='$delete_id' and user_id='$user_id'");
    header("location: dashboard.php");
    exit;
}

编辑密码

if (isset($_post['edit_password'])) {
    $id = $_post['id'];
    $platform_name = $_post['platform_name'];
    $platform_address = $_post['platform_address'];
    $account = $_post['account'];
    $password = $_post['password'];
    $conn->query("update passwords set platform_name='$platform_name', platform_address='$platform_address', account='$account', password='$password' where id='$id' and user_id='$user_id'");
    header("location: dashboard.php");
    exit;
}

通过模态框提供编辑密码功能,用户可以修改已有条目数据并提交更改。

安全性措施

密码加密:使用password_hash和password_verify函数确保用户密码安全存储和验证。

sql注入防范:用户输入通过适当的数据类型转换,避免直接拼接字符串进行查询,提升安全性。

权限控制:基于会话的角色验证,确保管理员操作权限,阻止普通用户访问管理页面。

结论

通过上述模块的构建,实现了一个功能完备的密码管理工具。系统设计中充分考虑了数据安全和用户权限控制,满足基础的密码管理需求。

以上就是基于php实现密码管理工具的详细内容,更多关于php密码管理工具的资料请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

PHP防止Shell命令注入的有效方法

11-25

PHP中防SQL注入的主要方法

11-25

PHP如何优化冗余代码

11-25

PHP如何抛出和接收错误的详细指南

11-25

Windows下配置Nginx和PHP的步骤及测试

11-25

PHP实现页面跳转的多种方法

11-25

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论