Ver Mensaje Individual
  #5 (permalink)  
Antiguo 24/06/2011, 06:25
moisesneveu
 
Fecha de Ingreso: octubre-2008
Mensajes: 162
Antigüedad: 15 años, 6 meses
Puntos: 11
Respuesta: Mostrar ultimo acceso de cada usuario

Gracias por las ayudas, me queda claro como hacerlo, voy a poner manos a la obra....

por lo de el usuario que está online justamente leía que algo similar a lo que me dices, poner un tiempo de unos minutos entonces cuando salga cerrando sesion pasados los minutos aparece como desconectado... pero estaba bastante enredado...

dejo un código que encontré... a la primera no me corrió... haber si a alguién le sirve en todo caso voy a volver a probarlo mas tarde...

y si pudieses de igual forma darme la idea que tu usas con porotitos para probarla plisss

1.- Primero necesitamos usar una tabla que sera la que guarde los registros y esta debe ser su estructura:

Código:
CREATE TABLE `usuariosenlinea` (
`timestamp` int(15) NOT NULL default '0',
`ip` varchar(40) NOT NULL default '',
`location` varchar(100) NOT NULL default '',
KEY `timestamp` (`timestamp`),
KEY `ip` (`ip`),
KEY `location` (`location`)
) TYPE=MyISAM;
Ahora el script, llamalo class.online.php:

Código PHP:
<?php
 
class Usuariosenlinea
{
/*
    * @autor: victor simental
    * @uri: http://phpwebmasters.com
    * @param string $servidor el host para conectar, usualmente localhost
    * @param string $basededatos el nombre de la base de datos
    * @param string $nombredb el nombre de la tabla, preferentemente no editar
    * @param string $usuario usuario de la base de datos
    * @param string $pass la contraseña de la base de datos
*/
 
  
var $servidor 'localhost';
  var 
$basededatos 'nombre_de_la_base';
  var 
$nombredb 'usuariosenlinea';
  var 
$usuario 'root';
  var 
$pass 'contraseña';
  
## Fin de Conexion ##
 
  
var $e_rror;
  
//Segundos para borrar de la base de datos a los usuarios inactivos
  
var $segundos 120;
  var 
$ahora 0;
 
    
//CONSTRUCTOR
    
function Usuariosenlinea() {
 
    
$this->recargar();
 
    }
 
    function 
cuantos() {
 
    return 
$this->ahora;
 
    }
 
    function 
enlinea() {
 
        if(
$this->ahora == 1) {
 
    echo 
$this->ahora ." Usuario en linea";
        }
        else
        {
    echo 
$this->ahora ." Usuarios en linea";
        }
 
    }
 
        function 
ipreal(){
 
            if (
$real_ip getenv('HTTP_X_FORWARDED_FOR')){
 
                
$explode_real_ip explode(","$real_ip);
                return 
trim($explode_real_ip[0]);
            }
            else
            {
            return 
getenv('REMOTE_ADDR');
            }
        }
 
        function 
error(){
 
        return 
$this->e_rror mysql_error();
 
        }
 
        function 
recargar() {
 
            
$tiempo_actual time();
            
$tiempo_final $tiempo_actual $this->segundos;
            
$ip $this->ipreal();
 
        @
mysql_connect($this->servidor$this->usuario$this->pass)
        or die(
'Error al Intentar Conectar con la base de datos '.$this->error().'');
 
        @
mysql_select_db($this->basededatos)
        or die(
'Error Seleccionando la base de datos '.$this->error().'');
 
        
$result mysql_query("SELECT ip FROM $this->nombredb WHERE ip='$ip'")
        or die(
'Error de lectura en la base de datos '.$this->error().'');
 
        if(
mysql_num_rows($result) == 0){
 
        
mysql_query("INSERT INTO $this->nombredb VALUES ('$tiempo_actual','$ip','$_SERVER[REQUEST_URI]')")
        or die(
'Error al Insertar en la base de datos '.$this->error().'');
 
        }
        else
 
        {        
        
mysql_query("UPDATE $this->nombredb SET timestamp='$tiempo_actual' where ip='$ip'")
        or die(
'Error al Insertar en la base de datos '.$this->error().'');
        }
 
        
mysql_query("DELETE FROM $this->nombredb WHERE timestamp < $tiempo_final")
        or die(
'Error al intentar borrar en la base de datos '.$this->error().'');
 
        
$result mysql_query("SELECT ip FROM $this->nombredb")
        or die(
'Error de lectura en la base de datos '.$this->error().'');
 
        
$this->ahora mysql_num_rows($result);
 
        
mysql_close();
 
        }
 
}
 
?>
Y ahora la forma de uso:

Código PHP:
<?php
//Pon esta Líneas donde quires que se visualizen los usuarios online
include("class.online.php");
 
$enlinea = new Usuariosenlinea();
$enlinea->enlinea();
?>
GRACIAS.