2011-11-04 6 views
1

저는 이전 게시물에서 언급했듯이 특정 웹 사이트에 대한 대화를 작성하고 있습니다. 이제이 채팅은 온라인 사용자 이름을 검색해야하고 한 사용자가 채팅 로그에서 로그 아웃하면 자동으로 업데이트됩니다.온라인 사용자의 이름을 얻으십시오

 <?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"> 
+8

그래서 ... 무엇이 문제입니까? –

+0

메타 새로 고침 태그를 주석 처리 하시겠습니까? 그렇다면,'//'는 html로는 작동하지 않을 것입니다. 여러분은' ' –

+0

이 필요합니다. 일단 사용자가 오프라인이되면리스트는 업데이트되지 않습니다. 오프라인 사용자의 이름이 온라인 사용자 목록에 계속 표시됨을 의미합니다. 사용자가 오프라인이되면 온라인 사용자 목록을 자동으로 업데이트하려고합니다. –

답변

0

당신이 부울 값을 추가해야한다 우리는 우리가 자주 refreshing.so까지 피하기 위해 jQuery를 사용하려고 혼자 지금 PHP를 사용하여이 문제를 만들 수 있었다, 이것은 우리가 무엇을 사용자 테이블의 DB에있는 사용자. 그가 로그인 할 때, 즉 프로필 페이지로 들어가면 BOOL 값을 1로 변경하고 로그 아웃하면 값을 0으로 변경합니다.

관련 문제