22/02/2009, 11:07
|
| | | Fecha de Ingreso: julio-2008 Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 16 años, 5 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
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; } }
?> 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 |