php实现登录小项目
环境准备
确保已安装PHP(建议7.4+版本)和MySQL数据库。推荐使用集成环境如XAMPP或WAMP简化配置。
数据库设计
创建用户表存储登录信息:
CREATE TABLE `users` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`username` VARCHAR(50) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
注册功能实现
创建注册表单register.php:
<form action="register_process.php" method="post">
<input type="text" name="username" placeholder="用户名" required>
<input type="password" name="password" placeholder="密码" required>
<button type="submit">注册</button>
</form>
处理注册逻辑register_process.php:

<?php
$conn = new mysqli('localhost', 'root', '', 'auth_demo');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$stmt = $conn->prepare("INSERT INTO users (username, password) VALUES (?, ?)");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
header("Location: login.php");
exit();
}
?>
登录功能实现
创建登录表单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', 'root', '', 'auth_demo');
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 "登录失败";
}
?>
会话管理
创建受保护页面dashboard.php:

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
}
?>
<h1>欢迎进入仪表盘</h1>
<a href="logout.php">退出登录</a>
退出登录处理logout.php:
<?php
session_start();
session_destroy();
header("Location: login.php");
exit();
?>
安全增强
在数据库连接后添加错误检查:
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
对所有用户输入进行过滤:
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
该实现包含完整注册/登录流程,使用预处理语句防止SQL注入,password_hash()安全存储密码,会话机制管理用户状态。可根据需要添加验证码、记住我等功能扩展安全性。






