php实现注册登录
PHP 注册功能实现
创建注册表单页面(register.php):
<form action="register_process.php" method="post">
<input type="text" name="username" placeholder="用户名" required>
<input type="email" name="email" placeholder="邮箱" required>
<input type="password" name="password" placeholder="密码" required>
<input type="password" name="confirm_password" placeholder="确认密码" required>
<button type="submit">注册</button>
</form>
处理注册逻辑(register_process.php):
<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 验证输入
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];
if ($password !== $confirm_password) {
die("两次密码输入不一致");
}
// 密码哈希
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// 插入数据库
$stmt = $conn->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $username, $email, $hashed_password);
if ($stmt->execute()) {
header("Location: login.php?register=success");
} else {
echo "注册失败: " . $conn->error;
}
?>
PHP 登录功能实现
创建登录表单页面(login.php):
<form action="login_process.php" method="post">
<input type="text" name="username" placeholder="用户名" required>
<input type="password" name="password" placeholder="密码" required>
<button type="submit">登录</button>
</form>
处理登录逻辑(login_process.php):

<?php
session_start();
$conn = new mysqli('localhost', 'username', 'password', 'database');
$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $conn->prepare("SELECT id, username, 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'];
$_SESSION['username'] = $user['username'];
header("Location: dashboard.php");
} else {
echo "密码错误";
}
} else {
echo "用户名不存在";
}
?>
用户会话管理
检查登录状态的通用代码(auth_check.php):
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
}
?>
在需要登录的页面引入检查:

<?php require 'auth_check.php'; ?>
安全增强措施
使用预处理语句防止SQL注入
$stmt = $conn->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $username, $email, $hashed_password);
密码重置功能建议:
// 生成重置令牌
$token = bin2hex(random_bytes(32));
$stmt = $conn->prepare("UPDATE users SET reset_token = ?, token_expires = DATE_ADD(NOW(), INTERVAL 1 HOUR) WHERE email = ?");
$stmt->bind_param("ss", $token, $email);
数据库表结构示例
用户表基本结构:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
reset_token VARCHAR(64),
token_expires DATETIME
);






