Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/03/2009, 17:15
Avatar de polin2bclan
polin2bclan
 
Fecha de Ingreso: julio-2008
Mensajes: 73
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: como mostrar usuarios registrados en linea

Hola amigo en mi Web tengo un sistema que yo desarrolle.

Empesemos:
ajax.js
Código PHP:
function receiveUserOnline(){
    var 
campoadduseronline document.getElementById('UserList');
    
    
//campoadduseronline.innerHTML = "<div align='center'><img src='pw-includes/imagenes/cargando2.gif' /></div>";
    
httpReceiveUserOnline.open("GET""php_ajax_usuariosonline.php",true);
    
httpReceiveUserOnline.onreadystatechange=function() {
        if (
httpReceiveUserOnline.readyState==4) {
            
campoadduseronline.innerHTML "";
            
campoadduseronline.innerHTML httpReceiveUserOnline.responseText;
            
        }
    }
    
httpReceiveUserOnline.send(null)
    
setTimeout('receiveUserOnline();',5000);

php_ajax_usuariosonline.php
Código PHP:
<?
session_start
();
include(
"./chek_login.php");
Mostrar_Nick_de_usuarios_en_Linea();
function 
Mostrar_Nick_de_usuarios_en_Linea()
{
    include(
"../configuracion.php");
    if (
getenv(HTTP_X_FORWARDED_FOR)=="")
        {
        
$ip getenv(REMOTE_ADDR);
        }
        else
            {
            
$ip getenv(HTTP_X_FORWARDED_FOR);
            }
    
$timeoutseconds 5//5 segundos
    
$timestamp=time();                                                                                            
    
$timeout=$timestamp-$timeoutseconds
    
/*===================================================
    = ADD / AÑADIMOS
    ====================================================*/
    
if(CheckNivel())
        {
        
$consulta mysql_query("select * FROM ".$tb_enlineareg." WHERE usuario='".$_SESSION['usuario_en_login']."'") or die ("Error1");
        
$num_resultados=mysql_num_rows($consulta);
        
$sql=mysql_fetch_array($consulta);
        
$laid=stripslashes($sql["id"]);
        if(
$num_resultados !=0)
            {
            
mysql_query("update ".$tb_enlineareg." set timestamp='".$timestamp."' WHERE id='".$laid."'") or die ("Error2") ;
            }
            else
                {
                
mysql_query("insert into ".$tb_enlineareg." values ('','".$_SESSION['usuario_en_login']."','".$timestamp."')") or die ("Error3") ;
                }
        }
        else
            {
            
$consu_noreg=mysql_query("select * FROM ".$tb_enlineano." WHERE ip='".$ip."'") or die ("Error4");
            
$num_noreg=mysql_num_rows($consu_noreg);
            
$sql_noreg=mysql_fetch_array($consu_noreg);
            
$idnoreg=stripslashes($sql_noreg["id"]);
            if(
$num_noreg !=0)
                {
                
mysql_query("update ".$tb_enlineano." set timestamp='".$timestamp."' WHERE id='".$idnoreg."'") or die ("Error5") ;
                }
                else
                    {
                    
mysql_query("insert into ".$tb_enlineano." values ('','".$ip."','".$timestamp."')") or die ("Error6") ;
                    }
            }
    
/*===================================================
    = ELIMINAMOS / CLEANING
    ====================================================*/
    
mysql_query("DELETE FROM ".$tb_enlineano." WHERE timestamp < ".$timeout."") or die("Useronline Database DELETE Error");
    
mysql_query("DELETE FROM ".$tb_enlineareg." WHERE timestamp < ".$timeout."") or die("Useronline Database DELETE Error");

    
/*===================================================
    = MOSTRAMOS LOS DATOS OBTENIDOS
    ====================================================*/
    
$consulta2 mysql_query("SELECT * FROM ".$tb_enlineareg."") or die ("Erro de consulta en DB") ;
    
$num_resultados2=mysql_num_rows($consulta2);
    if(
$num_resultados2 <> 0)
        {
        for(
$i=0$i<$num_resultados2$i++)
            {
            
$sql2=mysql_fetch_array($consulta2);
            
$useronlinenick=stripslashes($sql2["usuario"]);
            
//Consultamos los datos del usuario segun su nick
            
$consulta3=mysql_query("SELECT id,tipo FROM ".$tb_usuarios." WHERE nick='".$useronlinenick."'") or die ("Error7");    
            
$sql3=mysql_fetch_array($consulta3);
            
$idnick=stripslashes($sql3["id"]);
            
$tiponick=stripslashes($sql3["tipo"]);
            
//echo "UO".$idnick."---".$useronlinenick."---".$tiponick."---";
            
echo "<span class=\"".$tiponick."\" onclick=\"popup_perfil_user(event,'".$useronlinenick."')\" >".$useronlinenick."</span>, ";
            }        
        }
        else
            {
            echo 
"<div align=\"center\">No hay usuarios en linea en este momento.</div>";
            }

}
?>
chek_login.php
Código PHP:
<?
function CheckNivel()
{
include(
"../configuracion.php");
if(!empty(
$_SESSION['usuario_en_login']) && !empty($_SESSION['token']))
    {
       
//quitamos el posible SQLInjection del user y password
       
$_SESSION['usuario_en_login'] = mysql_real_escape_string($_SESSION['usuario_en_login']);
    
$_SESSION['token'] = mysql_real_escape_string($_SESSION['token']);
    
//checamos que exista
    
$consultaChek mysql_query("SELECT * FROM ".$tb_usuarios." WHERE nick = '".$_SESSION['usuario_en_login']."' && token = '".$_SESSION['token']."' ") or die("Error de reconocimiento de usuario");
    if(
mysql_num_rows($consultaChek) == 1)
        {
        
//volvemos a calcular un token
           
$_SESSION['token'] = md5(rand().$_SESSION['usuario_en_login']);
        
mysql_query("UPDATE ".$tb_usuarios." SET token = '".$_SESSION['token']."' WHERE nick = '".$_SESSION['usuario_en_login']."'") or die("Error al actualizar la info de session");
        return 
true;
        }
        else
            {
            return 
false;
            }
    
mysql_free_result($consultaChek);
    
    }
}
?>
configuracion.php
Código PHP:
<?
/*TABLAS DE LA BASE DE DATOS*/
$tb_usuarios="warez_usuarios";
$tb_enlineano="warez_enlineano";
$tb_enlineareg="warez_enlineareg";
/*CONEXION A LA BASE DE DATOS*/
$db mysql_pconnect("localhost","user","password");
if(!
$db)
    {
    echo 
"No se ha podido conectar a la base de datos - Error de conexion";
    exit;
    }
mysql_select_db    ("basededatos");
?>
Solo cambia el nombre al de tu sesión y crea las tablas en tu base de datos. Espero te sirva, en todo caso me puedes escribir por privado. Saludos