Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

[APORTE] class UsuariosOnline2 --Muestra usuariosOnline

Estas en el tema de [APORTE] class UsuariosOnline2 --Muestra usuariosOnline en el foro de Frameworks y PHP orientado a objetos en Foros del Web. estoy tratando de colocar un aporte hace rato y me sale un error en la pagina alguein sabe porque??? Error 500 page. Change it on ...
  #1 (permalink)  
Antiguo 21/02/2009, 22:36
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
[APORTE] class UsuariosOnline2 --Muestra usuariosOnline

estoy tratando de colocar un aporte hace rato y me sale un error en la pagina alguein sabe porque???
Error 500 page. Change it on /errors/500.html Add more on the .htaccess file

Saben donde puedo subir el codigo para que lo puedan visualizar facilmente los usuarios que quieran verlo?? Muchas gracias

Última edición por acoevil; 21/02/2009 a las 23:10
  #2 (permalink)  
Antiguo 22/02/2009, 11:07
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
Respuesta: [APORTE] class UsuariosOnline2

Hola quetal este es mi primer aporte a forosdelweb.com espero les guste si creen que deberia mejorar el codigo mas

me lo pueden decir todas sus criticas son bien recibidas... Ademas de no llevar mucho tiempo en PHP5 logre acabar

esta clase espero les guste

El primer archivo tiene como nombre ClassOnline.php y son algunas funciones que me facilitan el trabajo y la clase

que reliza todo el trabajo es la segunda que tiene como nombre UsuariosOnline2.php.
  • ¿ Que hace la clase?
  • Muestra en nombre de los usuarios que actualmente estan en el sitio web
  • Muestra el nivel del usuario admin, moderador, usuario ->debe ser especificado en los parametros
  • Puede configurar el limite de usuarios a mostrar
  • Tiene un paginador de usuarios ->debe ser especificado en los parametros
  • Configurar el tiempo de inactividad de un usuario
  • Primer archivo

Código PHP:
<?php 
session_start
();
class 
Configuraciones
{
    protected 
$conexion;
    public function 
Conexiondb($server,$user,$pass,$dbnombre)
    {
        
$conexion=mysql_connect($server,$user,$pass) or die ("No se pudo conectar");
        
mysql_select_db($dbnombre,$conexion) or die ("No se pudo seleccionar DB");
        if(
$conexion)
        {
            
$this->conexion=$conexion;
            return 
$this->conexion;
        }
        else
        {
            return 
false;
        }
        
    }
    protected function 
RealizaConsulta($NuevaConsulta)
    {
        
$resultado=mysql_query($NuevaConsulta);
        return 
$resultado;
    }
    protected function 
Obtener_num_rows($resultado,$cantidad)
    {
        if(
mysql_num_rows($resultado)>$cantidad)
        {
            return 
true;
        }
        else
        {
            return 
false;
        }
    
    }
    protected function 
Obetner_fetch_array($resultado)
    {
        
$row=mysql_fetch_array($resultado);
        return 
$row;
    }
    protected function 
BuscaCampo($consulta,$campo)
    {
        while(
$row=mysql_fetch_array($consulta))
        {
            if(
$row[0]==$campo)
            {
                return 
true;
            }
        }
        return 
false;
        
    }
}

?>

  • Segundo archivo

Código PHP:
<?php
/*
/*************************************************/
/* Este scriopt PHP es libre de usar siempre      *
* cuando no borren estas lineas y respeten la     *
* licencia GPL :                                  *
* http://opensource.org/licenses/gpl-license.php  *
* GNU Public License                              *
* *************************************************
Autor :  acoevil
Correo:  [email protected]
version: 1.2 (BETA)
Nombre Clase: UsuariosOnline2.php





/********        MODO DE USO      *********************
El modo de uso de esta clase es bastante sencillo 
en caso de no entenderlo enviar un email al autor 
y respondera las dudas en el menor tiempo posible


CONEXION A LA BD
$Configurar->Conexiondb("localhost","nombre_de_usuario","contrasena","nombre_db");

/*****************************/
//Los parametros 
//1 ->crear campo estado  OBLIGATORIO
//2 ->crear campo nivel
//3 -> limite de usuarios a mostrar defecto 10
//4 -> Paginador  "si" "no"
//5 -> Campo con el que se identifican los usuarios en la DB como el id del usuario
//6 -> Tabla de los usuarios donde esta el campo en el parametro 5
//7 -> Indica el tiempo de inactividad de un usuario por defecto se establecio 5 minutos

//Antes de incluir lo sgte se debe hacer un require_once a la pagina
//require_once("UsuariosOnline2.php");

//----------------------------------------------
// El $login representa la session que se inicia del usuario

//En las pagina de logueo debera incluirse 
//require_once("UsuariosOnline2.php");
//$UsuariosOnline->UpdateEstado($login,1);

//En las paginas de deslogueo debera incluise
//require_once("UsuariosOnline2.php");
//$UsuariosOnline->UpdateEstado($login,0);

//----------------------------------------------

//En las paginas donde se quiere visualizar los usuarios en linea
//$UsuariosOnline->Realizar();

//----------------------------------------------


//La aplicacion crea automaticamente un campo fechaStado en la tabla que eligio el usuario
//para controlar los usuarios que realmente estan enlinea 

//Por defecto se establecio 5 de inactividad para sacar a las personas  que no tienen
//actividad en el sitio web de igualmanera se puede cambiar este valor

//----------------------------------------------



session_start();
require_once(
"ClassOnline.php");

class 
UsuariosOnline extends Configuraciones
{
    private 
$campo;
    private 
$tabla;
    private 
$limite;
    private 
$enlinea;
    private 
$cestado;
    private 
$cnivel;
    private 
$paginacion;
    private 
$login;
    private 
$tiempo;
    
    
    function 
UsuariosOnline($cestado,$cnivel,$limite=10,$paginacion,$campo,$tabla,$tiempo=300)
    {
        
$this->campo=$campo;
        
$this->tabla=$tabla;
        
$this->cestado=$cestado;
        
$this->cnivel=$cnivel;
        
$this->paginacion=$paginacion;
        
$this->tiempo=$tiempo;
    
            
$this->limite=$limite;
            
$this->tiempo=$tiempo;
    }
    
    
    function 
Realizar()
    {
$this->CrearCampo($this->cestado,"estado","alter table $this->tabla add(estado bool default 0)");
$this->CrearCampo($this->cnivel,"nivel","alter table $this->tabla add(nivel int(3) default 1)");
$this->CrearCampo("si","FechaEstado","alter table $this->tabla add(FechaEstado datetime 
NOT NULL default '0000-00-00 00:00:00')"
);
    
    
        
//Compruebo que los Campos Obligatorios esten creados//
        
$Obli=$this->RealizaConsulta("SHOW COLUMNS FROM $this->tabla");
        if(
$this->BuscaCampo($Obli,"estado"))
        {
        
////////////////////////////////////////////////////
            
$this->CompFecha(); 
            
            
$this->IngFecha($_SESSION['login']);
                    
            
$this->enlinea=$this->ObtenerEstado1();    
                        
            if(
$this->paginacion=="no")
            {
                
$this->MostrarEnLinea($this->enlinea);
            }
            else
            {
                
$this->Paginacion();
                                            
            }
        }
        else
        {
            echo 
"El campo \"estado\" debe estar creado para el correcto funcionamiento";
        }
        
    }


    protected function 
ObtenerEstado1()
    {
        if(
$this->cnivel=="si" && $this->paginacion=="no")
        {
            
$usuarios=$this->RealizaConsulta("select nivel,$this->campo from $this->tabla 
            where estado=1 order by(nivel)desc"
);
            if(
$usuarios)
            {
                return 
$usuarios;
            }
                    
        }
        else
        {
        
            
$usuarios=$this->RealizaConsulta("select $this->campo from $this->tabla 
            where estado=1"
);
            if(
$usuarios)
            {
                return 
$usuarios;
            }

            
        }
    }

    
    protected function 
Paginacion()
    {
        
$pagina=$_GET['pag'];
        if(empty(
$pagina))
        {
            
$pagina=1;
            
$inicio=0;
        }
        else
        
        {
            
$inicio=($pagina 1) * $this->limite;
        }
        
$enlinea=mysql_num_rows($this->enlinea);
        
$paginas=ceil($enlinea/$this->limite);
        
        if(
$this->cnivel=="si")
        {
            
$Mostrar=$this->RealizaConsulta("select nivel,$this->campo from $this->tabla 
            where estado=1 order by(nivel)desc limit $inicio,$this->limite"
);    
        }
        else
        {
            
$Mostrar=$this->RealizaConsulta("select $this->campo from $this->tabla 
            where estado=1 limit $inicio,$this->limite"
);
        }
        
        
$this->MostrarEnLinea($Mostrar);
        
                
        for(
$n=1;$n<=$paginas;$n++)
        {
            if(
ereg("(&pag=)",$_SERVER['REQUEST_URI']))
            {
            
            
$url=$_SERVER['REQUEST_URI'];    
                    
            
$url2=substr($url,0,strlen($url)-6);
                
            echo 
"<a href=\"$url2&pag=$n\">$n</a>";
                
            
            }
            else
            {
                echo 
"<a href=\"$_SERVER[REQUEST_URI]&pag=$n\">$n</a>";
            }
        }
        
        
    }
    protected function 
MostrarEnLinea($registros)
    {
        echo 
"Usuarios En Linea: ".mysql_num_rows($this->enlinea)."<br>";
    
        
        while(
$row=mysql_fetch_array($registros))
        {
            if(
$this->cnivel="si")    
            {
                if(
$row['nivel']=="1"$nivel="->Usuario";
                if(
$row['nivel']=="12"$nivel="->Moderador";
                if(
$row['nivel']=="123"$nivel="->Administrador";    
                                            
                echo 
$row[$this->campo]." ".$nivel."<br>";
            }
            else
            {    
                echo 
$row[$this->campo]."<br>";
            }
                
        }
        
        
    }
    
    protected function 
CompFecha()
    {
        
$UsuariosEntrada=$this->RealizaConsulta("select $this->campo,FechaEstado from 

$this->tabla"
);
        
        while(
$row=mysql_fetch_array($UsuariosEntrada))
        {
            
            
//0000-00-00 00:00:00
            
$Entrada=explode(" ",$row['FechaEstado']);
            list(
$anio,$mes,$dia)=split("-",$Entrada[0]);
            list(
$hora,$min,$seg)=split(":",$Entrada[1]);
            
$Ingreso=mktime($hora,$min,$seg,$mes,$dia,$anio);
            

            
$horasa=date("H"); $mina=date("i"); $sega=date("s");
            
$mesa=date("m"); $diaa=date("d"); $anioa=date("Y");
            
$actual=mktime($horasa,$mina,$sega,$mesa,$diaa,$anioa);
            
            
$diferencia=$actual-$Ingreso;
            
            if(
$diferencia>=$this->tiempo)
            {
                
$this->UpdateEstado($row[$this->campo],0);
                
            }
        }
    }
    

    protected function 
IngFecha($login)
    {
        
$entrada=date("Y-m-d-H-i-s");
        
        
$IngFecha=$this->RealizaConsulta("update $this->tabla 
        set FechaEstado='$entrada' where $this->campo='$login'"
);
        
        if(!
$IngFecha)
        {
            echo 
"No se pudo insertar la fecha";
            return 
false;
        }
        
    }    
    
    protected function 
CrearCampo($conf,$Campoabuscar,$consulta)
    {
        if(
$conf=="si")
        {
            
$existencia=$this->RealizaConsulta("show columns from $this->tabla");
            if(!
$this->BuscaCampo($existencia,$Campoabuscar))
            {
            
$resultado=$this->RealizaConsulta($consulta);
            
            if(!
$resultado)
            {
                echo 
"No se pudo crear el campo ".$Campoabuscar;
                return 
false;
            }
            }
        }
            
    }
    public function 
UpdateEstado($login,$estado)
    {
        
session_register("login");        
        if(
$estado==1){ $this->IngFecha($login);  }
        
$existencia=$this->RealizaConsulta("SHOW COLUMNS FROM $this->tabla");
        if(
$this->BuscaCampo($existencia,"estado"))
        {
        
$resultado=$this->RealizaConsulta("update $this->tabla 
        set estado=$estado where $this->campo='$login'"
);
        
        if(!
$resultado)
        {
            echo 
"No se pudo actualizar el campo";
            return 
false;
        }
        }
        
        
    }

    
}
$Configurar=new Configuraciones;
$Configurar->Conexiondb("localhost","root","","foro_db");
$UsuariosOnline=new UsuariosOnline("si","si",3,"si","login","usuarios",300);

?>
La pueden bajar facilmente desde http://www.truekesoft.net/aporte/

Última edición por acoevil; 22/02/2009 a las 22:58
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 02:28.