要實(shí)現(xiàn)用戶在線狀態(tài)檢測(cè)的功能,您可以使用以下方法:
- 在用戶登錄時(shí),將其登錄時(shí)間存儲(chǔ)到數(shù)據(jù)庫(kù)中,并設(shè)置一個(gè)過期時(shí)間(例如,30分鐘)。這將標(biāo)記用戶為在線狀態(tài)。
- 在每個(gè)頁(yè)面的頂部添加一個(gè)PHP腳本,該腳本檢查當(dāng)前用戶的最后活動(dòng)時(shí)間是否超過了過期時(shí)間。如果超過,則將用戶標(biāo)記為離線狀態(tài)。
下面是一個(gè)基本的PHP腳本,可以用來實(shí)現(xiàn)此功能:
<?php
// 檢查用戶是否登錄
if (isset($_SESSION['user_id'])) {
$user_id = $_SESSION['user_id'];
// 連接數(shù)據(jù)庫(kù)
$db_host = "localhost";
$db_user = "root";
$db_password = "";
$db_name = "mydatabase";
$conn = mysqli_connect($db_host, $db_user, $db_password, $db_name);
// 檢查用戶的最后活動(dòng)時(shí)間
$sql = "SELECT last_activity FROM users WHERE id='$user_id'";
$result = mysqli_query($conn, $sql);
if ($result && mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_assoc($result);
$last_activity = $row['last_activity'];
// 檢查是否超過過期時(shí)間
if (time() - strtotime($last_activity) > 1800) {
// 標(biāo)記用戶為離線狀態(tài)
$sql = "UPDATE users SET is_online=0 WHERE id='$user_id'";
mysqli_query($conn, $sql);
} else {
// 更新用戶的最后活動(dòng)時(shí)間
$sql = "UPDATE users SET last_activity=NOW() WHERE id='$user_id'";
mysqli_query($conn, $sql);
}
}
// 關(guān)閉數(shù)據(jù)庫(kù)連接
mysqli_close($conn);
}
?>
請(qǐng)注意,這只是一個(gè)基本的示例腳本。您可能需要根據(jù)自己的具體需求對(duì)其進(jìn)行修改和定制。例如,您可能需要添加更多的錯(cuò)誤檢查和安全性檢查,以確保您的應(yīng)用程序不會(huì)受到任何攻擊。