Foros del Web » Programando para Internet » PHP »

Usuarios online?

Estas en el tema de Usuarios online? en el foro de PHP en Foros del Web. Saludos, Quería mostrar en mi web la gente que está online, pero no uso sesiones, a cada usuario le meto una cookie, quería saber si ...
  #1 (permalink)  
Antiguo 10/05/2004, 11:25
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
Usuarios online?

Saludos,

Quería mostrar en mi web la gente que está online, pero no uso sesiones, a cada usuario le meto una cookie, quería saber si es posible mostrar los nombres de la gente que está online simplemente leyendo las cookies de los usuarios... pero no tengo ni idea de como hago eso...

A cada usuario que se conecta le meto una cookie con un nombre que lo identifica... no habrá alguna variable global de la que extraer los nombre de la gente que está online?

Quizás el problema es que no uso sesiones, si las usara podría hacer lo que pretendo?

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #2 (permalink)  
Antiguo 10/05/2004, 11:29
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Yo uso esta clase

Yo uso esta clase y me va muy bien.
Código PHP:
<?php
class Online {
    var 
$host     'localhost';
    var 
$database 'marxismo';
    var 
$user     'root';
    var 
$password '';
    var 
$timeoutSeconds 120;
    var 
$numberOfUsers 0;
    function 
Online() {
        
$this->refresh();
    }
    function 
getNumber() {
        return 
$this->numberOfUsers;
    }
    function 
printNumber() {
        if(
$this->numberOfUsers == 1) {
            echo 
"$this->numberOfUsers usuario en línea";
        } else {
            echo 
"$this->numberOfUsers usuarios en línea";
        }
    }
    function 
refresh() {
        global 
$REMOTE_ADDR$PHP_SELF;
        
$currentTime time();
        
$timeout $currentTime $this->timeoutSeconds;
        
mysql_connect($this->host$this->user$this->password) or die('Error conecting to database');
        
mysql_db_query($this->database,"INSERT INTO usuariosenlinea VALUES ('$currentTime','$REMOTE_ADDR','$PHP_SELF')") or die('Error escribiendo en la Base de Datos');
        
mysql_db_query($this->database,"DELETE FROM usuariosenlinea WHERE timestamp < $timeout") or die('Error borrando de la Base de Datos');
        
$result mysql_db_query($this->database,"SELECT DISTINCT ip FROM usuariosenlinea WHERE file='$PHP_SELF'") or die('Error leyendo de la Base de Datos database');
        
$this->numberOfUsers mysql_num_rows($result);
        
mysql_close();
    }
}
?>
debes crear una tabla en tu bd que se llame usuariosenlinea
Código PHP:
CREATE TABLE `usuariosenlinea` (
  `
timestampint(15NOT NULL default '0',
  `
ipvarchar(40NOT NULL default '',
  `
filevarchar(100NOT NULL default '',
  
KEY `timestamp` (`timestamp`),
  
KEY `ip` (`ip`),
  
KEY `file` (`file`)
TYPE=MyISAM COMMENT='Tabla para almacenar los usuarios en Línea'
para usarla es asi:
Código PHP:
 include("class.online.php"); 
 
$online = new Online();
 
$online->printNumber(); 
Salu2
__________________
Ing. Reynier Pérez Mira
  #3 (permalink)  
Antiguo 10/05/2004, 11:36
 
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona - España
Mensajes: 270
Antigüedad: 15 años
Puntos: 0
Hola DjNelson, aquí tienes un script que te servira para lo que pretendes.

Código PHP:
<? 
$archivo
="usuarios.txt"//archivo donde almacenarán los usuarios activos
$inactivo=600//tiempo en segundos en que un usuario estará inactivo
$contar=0;
$fp=fopen($archivo,"r");
$tiempo=time();
$contenido=fread($fp,filesize($archivo));
fclose($fp);
$lineas=split("\n",$contenido);
$filas=file($archivo);
for (
$a=0$a sizeof($filas); $a++) {
$datos=split(':',$lineas[$a]);
$descontar=$tiempo-$inactivo;
if (
$datos[0] != $REMOTE_ADDR && $datos[1] > ($descontar)) {
$res.= $datos[0].":".$datos[1]."\n";
$contar++;
}}
$res.="$REMOTE_ADDR:$tiempo\n";
$contar++; // Ya tenemos el total de usuarios activos
$fp=fopen($archivo,"w");
fwrite ($fp,$res);
fclose($fp);
//Ahora damos formato a la salida, modifica esto a tu gusto
//Ten en cuenta que la variable $contar contiene el nº de usuarios activos
if ($contar==1){$contar="1 Usuario Activo";}else{$contar="$contar Usuarios Activos";}
echo 
$contar//Lo mostramos por pantalla
?>
  #4 (permalink)  
Antiguo 10/05/2004, 11:45
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
Ambas formas de hacerlo me gustan, pero ninguna muestra el nombre de los usuarios... y tampoco se puede distinguir entre los registrados y no registrados... pero me basta.

Gracias a ambos por la ayuda.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #5 (permalink)  
Antiguo 10/05/2004, 17:33
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
me basta pero... para sacar un listado de los nombres de los usuarios que están online haría falta emplear sesiones en vez de cookies, no?

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #6 (permalink)  
Antiguo 10/05/2004, 21:11
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Puedes hacerlo con las cookies igual

Podes hacerlo de la misma manera con las cookies. Solo debes poner:
Código PHP:
 echo $HTTP_COOKIES_VARS['nombredelacookiedeeseusuario']; 
Salu2
__________________
Ing. Reynier Pérez Mira
  #7 (permalink)  
Antiguo 11/05/2004, 15:00
 
Fecha de Ingreso: mayo-2004
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Hola Reynier,te mandé un mensaje privado, tengo una pequeña duda:

tengo el siguiente codigo:

Header('Location: pagina.htm');

y quiero que se abra con las siguientes caracteristicas:

height=60px, width=400px, top=300px, left=200px, status=no, menubar=no, resizable=no, scrollbars=no


estoy haciendo esto, pero no me funciona:


Header('Location: pagina.htm', 'height=60px, width=400px, top=300px, left=200px, status=no, menubar=no, resizable=no, scrollbars=no');

que estoy haciendo mal?

de antemano gracias por tu ayuda

te mando otravez mi email: [email protected]
  #8 (permalink)  
Antiguo 11/05/2004, 17:13
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 14 años, 7 meses
Puntos: 35
loading...........




Header no abre una pagina.
sinò que REDIRECCCIONA
eso lo puedes hacer con javascript.




connection closed.
__________________

Maborak Technologies
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:05.