Inicio arrow Trucos y tutoriales arrow Tutoriales PHP y APACHE arrow ¿Como hago para saber los usuarios en linea en mi web?
¿Como hago para saber los usuarios en linea en mi web? PDF Imprimir E-Mail

Con esta Clase PHP:

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();

?>

Comentarios
Añadir nuevoBuscar
¡Sólo los usuarios registrados pueden escribir comentarios!

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.

 
< Anterior   Siguiente >
 
 

Encuesta

¿ Que opinas de nuestro nuevo diseño Web ?
 

Estan en Linea

Hay 6 invitados en línea