php如何实现登录验证
PHP 登录验证实现方法
数据库连接与用户表创建
使用 MySQLi 或 PDO 连接数据库,创建用户表存储登录信息。用户表至少应包含 id, username, password 字段,密码需使用 password_hash() 函数加密存储。
// MySQLi 连接示例
$conn = new mysqli('localhost', 'username', 'password', 'database');
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
登录表单设计
创建 HTML 表单提交用户名和密码,确保表单使用 POST 方法提交数据。

<form action="login.php" method="post">
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<button type="submit">Login</button>
</form>
验证逻辑实现
在服务器端验证用户提交的数据,检查用户名是否存在并使用 password_verify() 验证密码。

session_start();
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();
}
}
$error = "Invalid username or password";
}
会话管理
登录成功后使用 $_SESSION 存储用户 ID,后续页面通过检查会话验证用户登录状态。
// 检查登录状态
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
}
安全增强措施
- 使用 HTTPS 加密传输
- 对用户输入进行过滤和转义防止 SQL 注入
- 设置 CSRF 令牌防止跨站请求伪造
- 限制登录尝试次数防止暴力破解
// 防止 SQL 注入示例
$username = mysqli_real_escape_string($conn, $_POST['username']);
密码重置功能
提供密码重置选项,通过电子邮件发送重置链接,使用一次性令牌验证用户身份。
// 生成重置令牌
$token = bin2hex(random_bytes(32));
$expires = date('Y-m-d H:i:s', strtotime('+1 hour'));
$stmt = $conn->prepare("UPDATE users SET reset_token = ?, reset_expires = ? WHERE email = ?");
$stmt->bind_param("sss", $token, $expires, $email);
$stmt->execute();






