php 实现注册登录
PHP 注册登录实现
数据库准备
创建一个名为 users 的表,包含以下字段:
id(INT, 主键, 自增)username(VARCHAR, 唯一)password(VARCHAR)email(VARCHAR, 唯一)
SQL 示例:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);
注册功能实现
创建 register.php 文件处理用户注册:
<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$email = $_POST['email'];
// 检查用户名是否已存在
$stmt = $db->prepare("SELECT id FROM users WHERE username = ?");
$stmt->execute([$username]);
if ($stmt->fetch()) {
echo "用户名已存在";
} else {
// 插入新用户
$stmt = $db->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");
$stmt->execute([$username, $password, $email]);
echo "注册成功";
}
}
?>
<form method="post">
用户名: <input type="text" name="username" required><br>
密码: <input type="password" name="password" required><br>
邮箱: <input type="email" name="email" required><br>
<button type="submit">注册</button>
</form>
登录功能实现
创建 login.php 文件处理用户登录:
<?php
session_start();
$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $db->prepare("SELECT id, password FROM users WHERE username = ?");
$stmt->execute([$username]);
$user = $stmt->fetch();
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
header("Location: dashboard.php");
exit();
} else {
echo "用户名或密码错误";
}
}
?>
<form method="post">
用户名: <input type="text" name="username" required><br>
密码: <input type="password" name="password" required><br>
<button type="submit">登录</button>
</form>
会话管理和登出
创建 dashboard.php 显示登录后的页面:
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
}
echo "欢迎, 用户ID: " . $_SESSION['user_id'];
?>
<a href="logout.php">登出</a>
创建 logout.php 处理登出:

<?php
session_start();
session_destroy();
header("Location: login.php");
exit();
?>
安全注意事项
- 始终使用
password_hash()和password_verify()处理密码 - 使用预处理语句防止 SQL 注入
- 对用户输入进行验证和过滤
- 在生产环境中使用 HTTPS
- 考虑实现 CSRF 保护
扩展功能建议
- 添加密码重置功能
- 实现记住我功能
- 添加验证码防止暴力破解
- 记录登录日志
- 实现账户锁定机制






