當前位置: 首頁> 最新文章列表> PHP實現CMS系統用戶登錄日誌功能的完整教程

PHP實現CMS系統用戶登錄日誌功能的完整教程

M66 2025-07-17

創建用戶登錄日誌數據庫表

實現用戶登錄日誌功能,首先需要在數據庫中創建相應的表,用來存儲用戶的登錄信息。這里以MySQL為例,創建一個名為login_logs的表,包含用戶ID、登錄IP和登錄時間等字段:

 CREATE TABLE login_logs (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    ip_address VARCHAR(45),
    login_time DATETIME
);

表結構設計簡潔明了,能夠有效存儲用戶每次登錄的關鍵信息。

實現登錄日誌記錄功能

用戶登錄成功後,需要及時將登錄信息寫入數據庫。下面的PHP函數logLogin示範瞭如何實現該功能:

 // 記錄用戶登錄日誌
function logLogin($userId, $ipAddress) {
    // 連接數據庫
    $conn = new mysqli("localhost", "username", "password", "database");

    // 獲取當前時間
    $loginTime = date('Y-m-d H:i:s', time());

    // 構造SQL語句
    $sql = "INSERT INTO login_logs (user_id, ip_address, login_time)
            VALUES ('$userId', '$ipAddress', '$loginTime')";

    // 執行SQL語句
    $conn->query($sql);

    // 關閉數據庫連接
    $conn->close();
}

// 使用示例
$userId = 1;
$ipAddress = $_SERVER["REMOTE_ADDR"]; // 獲取當前用戶的IP地址
logLogin($userId, $ipAddress);

該函數中,先建立數據庫連接,再獲取當前系統時間,最後將用戶ID、IP地址及登錄時間插入日誌表,完成登錄記錄的存儲。

查詢用戶登錄日誌

為了方便管理員查看用戶登錄情況,下面的getLoginLogs函數提供了查詢指定用戶登錄日誌的功能:

 // 查詢登錄日誌
function getLoginLogs($userId) {
    // 連接數據庫
    $conn = new mysqli("localhost", "username", "password", "database");

    // 構造SQL語句
    $sql = "SELECT * FROM login_logs WHERE user_id = '$userId'";

    // 執行SQL查詢
    $result = $conn->query($sql);

    // 处理查詢结果
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            // 輸出日誌信息
            echo "ID: " . $row["id"] . "<br>";
            echo "User ID: " . $row["user_id"] . "<br>";
            echo "IP Address: " . $row["ip_address"] . "<br>";
            echo "Login Time: " . $row["login_time"] . "<br><br>";
        }
    } else {
        echo "No login logs found.";
    }

    // 關閉數據庫連接
    $conn->close();
}

// 使用示例
$userId = 1;
getLoginLogs($userId);

此函數通過數據庫查詢,獲取指定用戶的所有登錄記錄,並逐條輸出,方便管理員進行查看和分析。

總結

通過以上步驟,我們實現了一個基本的用戶登錄日誌功能,包含日誌的存儲和查詢。此功能不僅有助於網站安全管理,還能為後續用戶行為分析提供數據支持。開發者可以根據實際需求進一步擴展功能,例如增加日誌篩選、導出或統計分析等。