2017-04-25 10 views
0

純粋なphp + ajaxでチャットをしました...うまくいっていますが、現在チャットにログインしているすべてのユーザーを何とか表示しようとしています。私はこれを達成するためのヒントを持っていませんが、ユーザがチャットにログインしたときに開始されたアクティブなセッションを何とかカウントできると思っていました。ここで誰かが私に私が何をすべきかについてのリードを与えることができましたか?私は他の質問を見てみましたが、誰も私の問題で私を助けることができませんでした。このことができますが、ここで現在アクティブなユーザーをプリントするph

while($row = $result->fetch_object()){ 
if($username == $row->username) 
{ 

     $checkPassword = password_verify($password,$row->password); 
     if($checkPassword){ 
      session_start(); 
      $_SESSION['loggedIn'] = true; 
      $_SESSION['user'] = $row->username; 
      $_SESSION['admin'] = $row->admin; 
      $_SESSION['userpic'] = $row->userpic; 
      $_SESSION['displayname'] = $row->displayname; 
      $_SESSION['id'] = $row->id; 
      header("Location:music.php?success"); 
      exit(); 
     } 


} 
else{ 
    $fail = true; 
    if($fail){  
echo "<script> 
alert('You typed in wrong password or username, please try again mate!'); 
window.location.href='music.php'; 
</script>"; 
} 
} 
} 
+0

チャットに関する情報を提供するコードを投稿できますか?特に、データベースやチャットルームにいる人を監視する場合に便利です。 – Naltroc

+0

'$ fail = false;'この行は決して実行されません。 –

+0

http://stackoverflow.com/questions/6431666/design-question-how-to-show-number-of-users-onlineで始める –

答えて

0

Idはあなたがサーバにすべての1-5分のリクエストを送信するスクリプトを作成することをお勧め私は、データベースからユーザーをフェッチログインコードであれば

は知ってはいけませんlast_online DBフィールドを更新します。その後、DBからユーザーをフェッチすると、last_onlineより条件を追加してから1〜5分後になります。

0

まず、コードにバグがあります。 $fail to trueを設定し、次にif($fail) {...}をチェックしています。このコードは常に実行されます。私はあなたがしたいと思う;

$fail = true; 
while(users) { 
    if(userName match && password check pass) { 
    $fail = false; 
    } 
} 
if ($fail) { do the error handling } 

アクティブユーザーを表示する限り、アクティブな手段を定義する必要があります。ユーザーの最後のログイン時刻を更新すると、"SELECT userName FROM users WHERE login_time > 'calculate xx minutes ago'"のように実行することができます

関連する問題