当前位置:首页 > 问答 > 正文

用户认证 登录功能 php登录页面完整代码—PHP登录页面完整代码

🔐 PHP登录页面完整代码:用户认证与登录功能详解

最新消息 📢(2025年08月更新):随着网络安全威胁升级,PHP 8.4已默认启用更严格的密码哈希算法,建议开发者使用password_hash()配合PASSWORD_ARGON2ID提升安全性!


🎯 为什么要自己写登录功能?

无论是个人博客还是企业系统,用户认证都是核心功能,自己编写登录页面可以:

用户认证 登录功能 php登录页面完整代码—PHP登录页面完整代码

  • ✅ 完全控制安全性
  • ✅ 灵活定制用户体验
  • ✅ 避免第三方依赖

今天我们就用PHP+MySQL实现一个带基础安全防护的登录系统!


🛠️ 必备工具

  1. PHP 7.4+ 环境(推荐XAMPP/WAMP)
  2. MySQL数据库
  3. 代码编辑器(VS Code/PhpStorm)

📝 完整代码实现

1️⃣ 数据库准备(MySQL)

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
);
-- 测试用户(密码:123456)
INSERT INTO `users` (`username`, `password`) 
VALUES ('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi');

2️⃣ HTML登录表单(login.php)

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">🔑 用户登录</title>
    <style>
        body { font-family: 'Arial', sans-serif; background: #f5f5f5; }
        .login-box { 
            width: 300px; margin: 100px auto; 
            padding: 20px; background: white; 
            box-shadow: 0 0 10px rgba(0,0,0,0.1);
        }
        .input-group { margin-bottom: 15px; }
        input { width: 100%; padding: 8px; }
        button { 
            background: #4CAF50; color: white; 
            border: none; padding: 10px; width: 100%; 
            cursor: pointer;
        }
        .error { color: red; }
    </style>
</head>
<body>
    <div class="login-box">
        <h2>👋 欢迎登录</h2>
        <?php if(isset($_GET['error'])): ?>
            <p class="error">❌ 用户名或密码错误!</p>
        <?php endif; ?>
        <form action="auth.php" method="POST">
            <div class="input-group">
                <label>用户名:</label>
                <input type="text" name="username" required>
            </div>
            <div class="input-group">
                <label>密码:</label>
                <input type="password" name="password" required>
            </div>
            <button type="submit">🚪 登录</button>
        </form>
    </div>
</body>
</html>

3️⃣ 认证处理(auth.php)

<?php
session_start();
// 数据库配置
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'test_db');
// 过滤用户输入
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$password = $_POST['password'];
try {
    $conn = new PDO(
        "mysql:host=".DB_HOST.";dbname=".DB_NAME, 
        DB_USER, 
        DB_PASS
    );
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // 查询用户
    $stmt = $conn->prepare("SELECT * FROM users WHERE username = :username");
    $stmt->bindParam(':username', $username);
    $stmt->execute();
    if($stmt->rowCount() == 1) {
        $user = $stmt->fetch(PDO::FETCH_ASSOC);
        // 验证密码
        if(password_verify($password, $user['password'])) {
            $_SESSION['user_id'] = $user['id'];
            $_SESSION['username'] = $user['username'];
            header("Location: dashboard.php"); // 登录成功跳转
            exit();
        }
    }
    // 认证失败
    header("Location: login.php?error=1");
} catch(PDOException $e) {
    die("数据库错误: " . $e->getMessage());
}
?>

4️⃣ 受保护页面示例(dashboard.php)

<?php
session_start();
if(!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit();
}
echo "🎉 欢迎, ".$_SESSION['username']."!";
echo "<p><a href='logout.php'>🚪 退出登录</a></p>";
?>

5️⃣ 退出登录(logout.php)

<?php
session_start();
session_destroy();
header("Location: login.php");
?>

🔒 安全增强建议

  1. 密码哈希:始终使用password_hash()
    $hashed = password_hash($password, PASSWORD_ARGON2ID);
  2. 防暴力破解:添加登录尝试限制
  3. HTTPS:生产环境必须启用
  4. CSRF防护:重要操作添加token验证

🚀 扩展功能方向

  • 添加"记住我"功能(使用安全Cookie)
  • 集成短信/邮箱验证码
  • 第三方登录(微信/OAuth)

💡 小贴士:2025年起,PHP官方推荐使用mysqliPDO替代旧的mysql_*函数,它们已完全移除!

用户认证 登录功能 php登录页面完整代码—PHP登录页面完整代码

希望这个教程能帮你快速构建安全的登录系统!遇到问题欢迎在评论区交流~ ✨

发表评论