简体   繁体   English

获取在线用户的名称

[英]get names of online users

as i have mentioned at my earlier post, we are creating a chat for a specific website. 正如我在之前的帖子中提到的,我们正在为特定网站创建聊天。 Now this chat would have to retrieve the names of the users online and would automatically update once one user would log out of the chat. 现在,此聊天将不得不在线检索用户的名称,并且一旦一个用户退出聊天,它将自动更新。 we were able to create this with the use of PHP alone and right now we are trying to use jquery to avoid often refreshing.so far, this is what we have: 我们能够单独使用PHP来创建它,现在我们正尝试使用jquery来避免经常刷新。到目前为止,这是我们拥有的:

     <?php
     session_start();       //Configuation
     ?>

     <link rel="stylesheet" type="text/css" href="http://www.pinoyarea.com/videochat/css/winterblues.css">

    <?php

       $name = $_SESSION['username'];
       $room = $_SESSION['room'];
       $user = $_SESSION['user'];
       if($name == NULL || $room == NULL || $user = NULL)
       {
          echo "<script>window.location = 'http://www.pinoyarea.com/index.php?p=member/signup';</script>";
       }
     include "connect.php";

     $timeoutseconds = 60; // length of session, 20 minutes is the standard
     $timeoutseconds_idle = 30;
     $timestamp=time();
     $timeout=$timestamp-$timeoutseconds;
     $timeout_idle=$timestamp-$timeoutseconds_idle;
     $PHP_SELF = $_SERVER['PHP_SELF'];
     if (!empty($_SERVER["HTTP_CLIENT_IP"]))
     {
       //check for ip from share internet
       $ip = $_SERVER["HTTP_CLIENT_IP"];
     }
     elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
     {
        // Check for the Proxy User
        $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
     }
     else
     {
       $ip = $_SERVER["REMOTE_ADDR"];
     }
     $temp = @mysql_query("SELECT * FROM useronline WHERE online_name='$name' AND online_user='$user' AND online_room='$room'");
      $rowie = @mysql_num_rows($temp);
     // Add this user to database
      $loopcap = 0;
      while ($loopcap<3){
      if($rowie == 0 AND $name != NULL)
      {
      @mysql_query("insert into useronline values('$timestamp','$ip','$PHP_SELF','$name','$room','$user')");
      }
      else
         {
         } // in case of collision
      $timestamp = $timestamp+$ip{0}; $loopcap++;
      }

       // Delete users that have been online for more then "$timeoutseconds" seconds
          mysql_query("delete from useronline where timestamp<$timeout");

       //Modified

       // Select users online
       $result = @mysql_query("select distinct online_name from useronline"); 
       $result2 = @mysql_query("SELECT distinct online_name FROM useronline WHERE online_room='$room'");
       $user_count = @mysql_num_rows($result2);
        mysql_free_result($result);
       @mysql_close();


     // Show all users online
     echo '<table name="tableonline" width="180px">';
     if ($user_count==1) 
      {
   echo '<tr><th>';
   echo '<font size="1px" style="font-family:arial;"><strong>'.$user_count.' Toozer Online</th></tr>';
      } 
      else 
      {
     echo '<tr><th>'.$user_count.' Toozers Online</strong></font></th></tr></table>';
      }

     echo "</table><br /><table width='180px'>";
     while($cell = mysql_fetch_array($result2))
    {
   $timestamping = $cell["timestamp"];
   if($timestamping >= $timeout_idle && $timestamping < $timeout)
  {
      $src = "http://www.pinoyarea.com/images/videochat/user-offline.png";
  }
   else
  {
    $src = "http://www.pinoyarea.com/images/videochat/user-online.png";
  }
      echo '<tr><td><img src="'.$src.'"/><font size="1px" style="text-decoration:none;font-family:tahoma;"></td><td>'.$cell["online_name"].'</font>';
      echo '<br /></td></tr>';
     }
    echo '<table>';

   ?>
  <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js">  </script>
  <script>
  $(document).ready(function() {
  $("#tableonline").load("online_users.php");
   var refreshId = setInterval(function() {
   $("#tableonline").load('online_users.php?randval='+ Math.random());}, 3000);
   });
   </script>

    //<META HTTP-EQUIV="Refresh" CONTENT="10">

You have to put a boolean value for the user in the DB (in the user table). 您必须在数据库中(在用户表中)为用户输入一个布尔值。 when he get's login ie when he enter's to his profile page the BOOL value should be changed to 1 and when he get logout change the vlaue to 0. 当他登录时,即当他进入个人资料页面时,BOOL值应更改为1,而当他注销时,将vlaue更改为0。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM