實現用戶登錄日誌功能,首先需要在數據庫中創建相應的表,用來存儲用戶的登錄信息。這里以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);
此函數通過數據庫查詢,獲取指定用戶的所有登錄記錄,並逐條輸出,方便管理員進行查看和分析。
通過以上步驟,我們實現了一個基本的用戶登錄日誌功能,包含日誌的存儲和查詢。此功能不僅有助於網站安全管理,還能為後續用戶行為分析提供數據支持。開發者可以根據實際需求進一步擴展功能,例如增加日誌篩選、導出或統計分析等。