一、数据库设计(基础架构)
1. 用户表结构示例
sql
CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
建议使用MySQLi或PDO扩展连接数据库
二、注册功能实现
1. 注册页面(register.php)
php
require_once 'config.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = trim($_POST['username']);
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
// 检查用户名重复
$stmt = $conn->prepare("SELECT id FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute;
if ($stmt->get_result->num_rows > 0) {
die("用户名已存在");
// 插入数据库
$insert_stmt = $conn->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");
$insert_stmt->bind_param("sss", $username, $password, $email);
if ($insert_stmt->execute) {
header("Location: login.php");
exit;
?>
关键点:使用password_hash加密密码,预处理语句防止SQL注入
2. HTML表单
html
三、登录功能实现
1. 登录处理(login.php)
php
session_start;
require_once 'config.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $conn->prepare("SELECT id, password FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute;
$result = $stmt->get_result;
if ($result->num_rows == 1) {
$user = $result->fetch_assoc;
if (password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
header("Location: dashboard.php");
exit;
echo "用户名或密码错误";
?>
关键点:session管理,password_verify验证密码
四、安全增强措施
1. 输入验证
php
function validateInput($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
建议对所有用户输入执行过滤
2. 其他安全策略
五、扩展功能建议
1. 密码重置功能
php
// 生成重置令牌
$token = bin2hex(random_bytes(32));
$expires = date("Y-m-d H:i:s", time + 3600); // 1小时有效期
通过邮件发送包含令牌的链接
2. 记住我功能
使用加密的HTTP Cookie存储持久登录信息,需配合token验证机制
典型错误规避
1. 避免事项
开发资源推荐
1. 快速实现方案
该方案综合了密码安全、输入验证、会话管理等关键要素,建议配合XAMPP等本地服务器环境进行开发测试。实际部署时需根据业务需求添加邮箱验证、用户权限分级等扩展功能。














































