主页 > 创业  > 

基于PHP和MySQL的用户登录注册系统实现

基于PHP和MySQL的用户登录注册系统实现

 

系统架构

系统采用前后端分离的架构,使用PHP作为后端语言,MySQL作为数据库。以下是系统的整体架构图:

这个架构图展示了系统的三个主要层次:

前端界面层:包含用户交互的三个页面(注册、登录和欢迎页面)后端服务层:处理用户请求的PHP处理器和管理用户会话的组件数据库层:使用MySQL存储用户信息

当用户进行注册或登录操作时,数据会从前端界面传递到PHP处理器,经过验证后存储到MySQL数据库中。会话管理确保用户登录状态的维护,成功登录后显示欢迎页面。

数据库设计

首先,我们需要创建一个存储用户信息的数据库表。以下是表结构:

CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE KEY (email) ); 后端实现 数据库连接文件(db.php): <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "user_system"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } ?> 注册页面(register.php): <?php session_start(); include 'db.php'; if ($_SERVER["REQUEST_METHOD"] == "POST") { $username = $_POST['username']; $email = $_POST['email']; $password = $_POST['password']; // 检查邮箱是否已存在 $stmt = $conn->prepare("SELECT email FROM users WHERE email = ?"); $stmt->bind_param("s", $email); $stmt->execute(); $stmt->store_result(); if ($stmt->num_rows > 0) { $error = "该邮箱已被使用"; } else { // 插入新用户 $stmt = $conn->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)"); $stmt->bind_param("sss", $username, $email, $password); if ($stmt->execute()) { header("Location: login.php"); exit(); } else { $error = "注册失败,请重试"; } } $stmt->close(); } ?> 登录页面(login.php): <?php session_start(); include 'db.php'; if ($_SERVER["REQUEST_METHOD"] == "POST") { $email = $_POST['email']; $password = $_POST['password']; $stmt = $conn->prepare("SELECT id, username FROM users WHERE email = ? AND password = ?"); $stmt->bind_param("ss", $email, $password); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows == 1) { $user = $result->fetch_assoc(); $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; header("Location: welcome.php"); exit(); } else { $error = "邮箱或密码错误"; } $stmt->close(); } ?> 欢迎页面(welcome.php): <?php session_start(); include 'db.php'; if (!isset($_SESSION['user_id'])) { header("Location: login.php"); exit(); } $username = $_SESSION['username']; ?> HTML界面 注册页面HTML: <!DOCTYPE html> <html> <head> <title>用户注册</title> <style> .container { width: 300px; margin: 50px auto; padding: 20px; border: 1px solid #ccc; } .error { color: red; margin-bottom: 10px; } </style> </head> <body> <div class="container"> <h2>用户注册</h2> <?php if(isset($error)): ?> <div class="error"><?php echo $error; ?></div> <?php endif; ?> <form action="" method="post"> <div> <label>用户名:</label> <input type="text" name="username" required> </div> <div> <label>邮箱:</label> <input type="email" name="email" required> </div> <div> <label>密码:</label> <input type="password" name="password" required> </div> <button type="submit">注册</button> </form> <p>已有账号?<a href="login.php">登录</a></p> </div> </body> </html> 登录页面HTML: <!DOCTYPE html> <html> <head> <title>用户登录</title> <style> .container { width: 300px; margin: 50px auto; padding: 20px; border: 1px solid #ccc; } .error { color: red; margin-bottom: 10px; } </style> </head> <body> <div class="container"> <h2>用户登录</h2> <?php if(isset($error)): ?> <div class="error"><?php echo $error; ?></div> <?php endif; ?> <form action="" method="post"> <div> <label>邮箱:</label> <input type="email" name="email" required> </div> <div> <label>密码:</label> <input type="password" name="password" required> </div> <button type="submit">登录</button> </form> <p>没有账号?<a href="register.php">注册</a></p> </div> </body> </html> 欢迎页面HTML: <!DOCTYPE html> <html> <head> <title>欢迎页面</title> </head> <body> <div style="text-align: center; margin-top: 50px;"> <h2>欢迎您,<?php echo htmlspecialchars($username); ?>!</h2> <p><a href="logout.php">退出登录</a></p> </div> </body> </html> 安全考虑

1.密码安全:

在生产环境中,应该使用password_hash()和password_verify()处理密码永远不要以明文存储密码

2.SQL注入防护:

使用预备语句(prepared statements)防止SQL注入所有用户输入都要经过验证和过滤

3.会话安全:

使用session_regenerate_id()防止会话固定攻击设置适当的会话超时时间

4.XSS防护:

使用htmlspecialchars()输出用户数据设置适当的Content-Security-Policy 部署步骤 安装MySQL数据库创建数据库和表结构配置PHP环境上传所有PHP文件到服务器修改db.php中的数据库连接配置测试所有功能

 

标签:

基于PHP和MySQL的用户登录注册系统实现由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“基于PHP和MySQL的用户登录注册系统实现