php实现表单登录
PHP 表单登录实现
创建一个基本的 PHP 表单登录系统需要处理 HTML 表单、验证用户输入、检查数据库中的用户凭据以及管理会话。以下是实现步骤:

创建登录表单 (HTML)
<form action="login.php" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
<input type="submit" value="登录">
</form>
处理登录逻辑 (PHP)
<?php
session_start();
// 数据库连接
$host = 'localhost';
$dbname = 'your_database';
$user = 'db_username';
$pass = 'db_password';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
die("数据库连接失败: " . $e->getMessage());
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = trim($_POST['username']);
$password = $_POST['password'];
// 验证用户输入
if (empty($username) || empty($password)) {
$error = "用户名和密码不能为空";
} else {
// 查询数据库
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $username);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user && password_verify($password, $user['password'])) {
// 登录成功,创建会话
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
header("Location: dashboard.php");
exit();
} else {
$error = "用户名或密码错误";
}
}
}
?>
密码安全处理
在将密码存储到数据库前,应该使用 PHP 的 password_hash() 函数进行哈希处理:
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
会话管理和登出
创建一个简单的登出功能:
<?php
session_start();
session_unset();
session_destroy();
header("Location: login.php");
exit();
?>
安全注意事项
- 使用 HTTPS 保护数据传输
- 对用户输入进行验证和过滤
- 使用预处理语句防止 SQL 注入
- 实现 CSRF 保护
- 限制登录尝试次数防止暴力破解
- 使用强密码哈希算法
这个基本实现可以根据具体需求进行扩展,比如添加记住我功能、密码重置或双因素认证等。







