Graficar Usuarios activos sin BD

31 08 2009

Para mostrar los usuarios activos como una imagen y sin tocar la base de datos usaremos este script (activos.php):

<?php
// Usuarios activos con PHP sin utilizar bases de datos 
// combinado con imagen de fondo (marca de agua) 

$onlinetxtlist = "onlineVisitorsNow.txt";;
$imagen = "img/bgActivos.png"; //ruta a la imagen

//primero, obtener IP y guardarla 

if ($_SERVER) {  
	if ( $_SERVER&#91;"HTTP_X_FORWARDED_FOR"&#93; ) {  
		$realip = $_SERVER&#91;"HTTP_X_FORWARDED_FOR"&#93;;  
	} elseif ( $_SERVER&#91;"HTTP_CLIENT_IP"&#93; ) {  
		$realip = $_SERVER&#91;"HTTP_CLIENT_IP"&#93;;  
	} else {  
		$realip = $_SERVER&#91;"REMOTE_ADDR"&#93;;  
	}  

} else {  
	if ( getenv( "HTTP_X_FORWARDED_FOR" ) ) {  
		$realip = getenv( "HTTP_X_FORWARDED_FOR" );  
	} elseif ( getenv( "HTTP_CLIENT_IP" ) ) {  
		$realip = getenv( "HTTP_CLIENT_IP" );  
	} else {  
		$realip = getenv( "REMOTE_ADDR" );  
	}  
}  

// Tiempo en segundos en que expira la sesión.  
$fin_session = 10000;  
 

// En $onlinetxtlist guardaremos el IP y hora en que el usuario inicio la sesión 
if(!file_exists($onlinetxtlist)){//para evitar errores, ver si existe el archivo
	$fp = fopen($onlinetxtlist,"w");  
	fputs($fp,"");  
	fclose($fp);  
}
 
$arr = file($onlinetxtlist);  
$contenido = $realip.":".time()." ";  

for ( $i = 0 ; $i < sizeof($arr) ; $i++ )  
{  
	$tmp = explode(":",$arr&#91;$i&#93;);  
	
	if (( $tmp&#91;0&#93; != $realip ) && (( time() - $tmp&#91;1&#93; ) < $fin_session ))  
	{  
		$contenido .= $realip.":".time()." ";  
	}  
}  

$fp = fopen($onlinetxtlist,"w");  
fputs($fp,$contenido);  
fclose($fp);  

$array = file($onlinetxtlist);  
$USUARIOS_ACTIVOS = count($array); //este es el numero uçque queriamos 


//segundo, graficar la informacion
header("Contet-type: image/jpeg"); // Esto indica al navegador que se le va a enviar datos de imagen 

$ext = strtolower(end(explode(".",$imagen))); // Obtenemos así la extensión de la imagen 


$validext = array("jpeg","jpg","png","gif"); // Definimos las extensiones válidas 

if(empty($imagen) || !in_array($ext,$validext) || !file_exists($imagen)) { /* Si no se ha enviado una imagen como parámetro o la extensión no es válida, enviaremos un recuadro con el numero */ 
	$im = imagecreate ( 48 , 19 ); // Tamaño de la imagen 
	$bg = imagecolorallocate ( $im , 255 , 255 , 255 ); // El primer color que indiquemos será el color de fondo
	$textcolor = imagecolorallocate ( $im , 0 , 0 , 0 ); // Color negro para el texto 
		$fontwidth = imagefontwidth(5);
		$texto_ancho = ($fontwidth*strlen($USUARIOS_ACTIVOS))*2;
		$textoaladerecha = imagesx($im)-$texto_ancho;

	imagestring ( $im , 5 , $textoaladerecha , 4 , $USUARIOS_ACTIVOS , $textcolor ); // Escribimos $USUARIOS_ACTIVOS en la imagen
	imagejpeg($im,'',90); // Mostramos la imagen por pantalla con una calidad de 90 
} else { // Aquí debemos marcar la imagen que nos pasan por parámetro y mostrarla 

	if($ext == "jpeg" || $ext == "jpg") { // Creamos una imagen desde una imagen jpeg
		$im = imagecreatefromjpeg($imagen);
	} elseif($ext == "gif") {
		$im = imagecreatefromgif($imagen);
	} else {
		$im = imagecreatefrompng($imagen);
	} // A partir de aquí ya tenemos la imagen en $im, solo queda marcarla

	$blanco = imagecolorallocate ( $im , 255 , 255 , 255 );
	$negro = imagecolorallocate ( $im , 0 , 0 , 0 ); 

	$ancho = imagesx($im); // Ancho de la imagen
	$alto = imagesy($im); // Alto 

	// Por último escribimos $USUARIOS_ACTIVOS en la imagen , con el texto a la derecha
		$fontwidth = imagefontwidth(5);
		$texto_ancho = ($fontwidth*strlen($USUARIOS_ACTIVOS))*2; // Cálculamos lo que ocupa el texto en ancho 
		$textoaladerecha = $ancho-$texto_ancho;

	imagestring($im,5,$textoaladerecha,$alto-17,$USUARIOS_ACTIVOS,$blanco);
	imagejpeg($im,'',90);
} 
?>

Las única 2 cosas a modificar son el nombre del archivo que contiene la lista de IPs y la ruta a la imagen. Aquí la imagen que use:
fondo

Al colocar este codigo en una pagina:

<img src="activos.php" alt="usuarios">

El resultado seria este:
usuarios activos

Tiene la ventaja de que se puede actualizar sin recargar toda la página
si le ponemos estos atributos a la imagen:

<img src="activos.php" id="activeucrIMG" onLoad="javaScript:setTimeout('recargaActivos()',30000)" alt="usuarios">

<script type="text/javaScript">
function recargaActivos(){
          document.getElementById('activeucrIMG').src="activos.php";
}
</script>

Así, cada 30 segundos se actualizara la imagen.

Anuncios

Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: