2017-02-07 35 views
0

我有10個頁面和用戶數據庫。PHP>從在線用戶(在線用戶)讀取餅乾

在索引中,我要求用戶從下拉菜單中選擇他的名字,然後將該值保存爲Cookie。

我的目標是在每個網頁上顯示誰在線。

我目前的方法只顯示一個用戶, 即:如果用戶A選擇他的名字,那麼只有他的名字將顯示在誰在這個網頁上在線。

我需要顯示所有用戶

什麼想法?

我的代碼

 if(isset($_COOKIE[UserID])) { 

     $UserID = $_COOKIE[UserID]; 

     $UserRequest = "SELECT first_name FROM users WHERE user_id ='$UserID' "; 
     $UserName = $Connect->query($UserRequest); 

     while($row = $AgentName->fetch_assoc()) { 
      $FirstName = $row["first_name"]; 

     } 
     print "$FirstName"; 

    } else { 


     } 
+0

有沒有你已經試過的代碼? – Jer

+0

向我們展示你的嘗試。事實上,這個問題是廣泛的。順便說一句,爲什麼用戶需要選擇用戶自己的名字?你不應該爲用戶做這件事嗎? –

+0

@MagnusEriksson,我現在添加了我的代碼,目前我沒有登錄功能,所以這是爲了讓事情變得更快。 – marvillous

回答

0

您可以做的是在用戶表中添加一個名爲lastaction的新列。每當用戶導航到您的網站時,此列都會更新。在這個例子中,我們將顯示最後5分鐘內「在線」的所有用戶。在PHP

SELECT username FROM table WHERE lastaction > DATE_SUB(NOW(), INTERVAL 5 MINUTE) WHERE userid='2' 

例:

然後你就可以用類似這樣的查詢得到的間隔DATE_SUB()

<?php 
$query = $mysqli->query("SELECT username FROM table WHERE lastaction > DATE_SUB(NOW(), INTERVAL 5 MINUTE) WHERE userid='2'"); 
if($query->num_rows == 0) 
{ 
    echo "There are no users online."; 

}else{ 
    echo '<ul>'; 
    while($row = $query->fetch_assoc()) 
    { 
     echo "<li>{$row["username"]}</li>"; 
    } 
    echo '</ul>'; 
} 
?> 

而且當用戶點擊F5或東西然後更新lastaction

$mysqli->query("UPDATE lastonline = NOW() WHERE userid='2'"); 

我希望這會幫助你!

注意:您需要將此代碼更新爲自己的代碼,因爲這是作爲示例編寫的。

+0

感謝這個想法與我合作,我添加了頁面ID和動作時間到DB和我的方法正在工作:) – marvillous

+0

@marvillous很高興它的工作:) – Jer

0

添加時間戳到您的用戶表,並更新每個頁面請求。現在,您可以查詢並顯示在最近X秒/分鐘內請求了頁面的所有用戶。