Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2009, 21:56
DarkCo0oL
 
Fecha de Ingreso: abril-2009
Mensajes: 27
Antigüedad: 15 años, 1 mes
Puntos: 0
Pregunta Contador de visitas Online

Hola un saludo a todos, particularmente ya he navegado por este foro pero de manera como Guess, y gracias al buscador he solucionado mis problemas sin necesidad de postear, pero ahora... estoy en una circunstancia compleja verán he estado haciendo un contador de visitas online, a claro primero que no es el contador tipico que va sumando al total de las ultimas visitas, este contador son las visitas que estan en este momento viendo una pagina web, bien hasta ahora; tengo una pagina custom en un foro SMF donde se encuentra un Chat PJIRC, ahi quiero colocar el contador (en la página custom). Ahora ese contador quiero que se muestre en cualquier parte de la web, pero sin seguir aumentando.

He tomado el siguiente codigo:

Código PHP:
<?
//Script created by Razore.co.uk under the GNU GPL


//Database variables
$server             "localhost";          // Your MySQL Server address. This is usually localhost
$db_user            "nombre_username";         // Your MySQL Username
$db_pass            "pass_username";        // Your MySQL Password
$database           "nombre_BD";          // Database Name

//Customizations
$timeoutseconds     "300";            // How long it it boefore the user is no longer online
$showlink         "0";                  // Link to us? 1 = Yes  0 = No

//Only one person is online
$oneperson1       "En la actualidad hay";  //Change the text that will be displayed
$oneperson2       "usuario online.";     //Change the text that will be displayed

//Two or more people online
$twopeople1       ="En la actualidad hay"//Change the text that will be displayed
$twopeople2       ="usuarios online.";      //Change the text that will be displayed

//The following should only be modified if you know what you are doing
$timestamp=time();
$timeout=$timestamp-$timeoutseconds;  
mysql_connect($server$db_user$db_pass) or die ("online Database CONNECT Error");                                                                   
mysql_db_query($database"INSERT INTO online VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')") or die("online Database INSERT Error"); 
mysql_db_query($database"DELETE FROM online WHERE timestamp<$timeout") or die("online Database DELETE Error");
$result=mysql_db_query($database"SELECT DISTINCT ip FROM online WHERE file='$PHP_SELF'") or die("online Database SELECT Error");
$user  =mysql_num_rows($result);
mysql_close();


if (
$user==1) {$archivo 'archivo.txt';
$fp fopen($archivo"w");
$string "$oneperson1 $user $oneperson2";
$write fputs($fp$string);
fclose($fp);}

else {
$archivo 'archivo.txt';
$fp fopen($archivo"w");
$string "$twopeople1 $user $twopeople2";
$write fputs($fp$string);
fclose($fp);}

//If you have chosen to support us.
switch ($showlink) {
case 
0:
   echo 
"";
   break;
case 
1:
   echo 
"<br><br><font size=\"1\">Prueba Design Online by
<a target=\"_blank\" href=\"pagina aqui\">Prueba</a></font>"
;
   break;
}
?>
Código:
#Created by Razore



#
# Table structure for table 'online'
#

CREATE TABLE online (
   timestamp int(15) DEFAULT '0' NOT NULL,
   ip varchar(40) NOT NULL,
   file varchar(100) NOT NULL,
   PRIMARY KEY (timestamp),
   KEY ip (ip),
   KEY file (file)
);
Este es el codigo del contador y el de la BD.

Bien explico el código php, se conecta a la base de datos y va agregando usuarios ("visitantes") a la tabla, se borrára despues de que haya consumado su secion 300seg, y la cadena de los valores de las variables es guardada en el archivo.txt

Ahora en la pagina del chat he colocado

Código PHP:
<?php
//This file shows you how to include the file in your php document.
include("online.php"); 
?>
Para que el usuario que entre cuente como visitante y se agregue en la tabla y escriba en el archivo.txt

Ahora hize otro archivo php, donde genera una imagen leyendo el texto que se encuentra en el archivo.txt y coloque esa imagen en cualquier parte de mi sitio web y muestre los visitantes que estan en la pagina custom del foro (que viene siendo la del chat)

el codigo es el siguiente:

Código PHP:
<?php
$archivo 
'archivo.txt';
$fp fopen($archivo"r");
$contents fread($fpfilesize($archivo));

$font imageloadfont('8x13iso.gdf');

/* I use .gdf as its extension to represents "GD Fonts" */
/* But, if your server not allow .gdf, you can change it*/
/* to any extension .jpg, .bmp, .txt, .bmf, .etc        */

$fontWidth imagefontwidth($font);
$fontHeight imagefontheight($font);
$im imagecreate(strlen($contents) * $fontWidth$fontHeight);
$bgColor imagecolorallocate($im255255255);
$fgColor imagecolorallocate($im,   0,   0255);
imagestring($im$font00$contents$fgColor);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
fclose($fp);
?>
Generá la imagen de acuerdo el contenido del archivo.txt

Ahora las siguientes cuestiones que me complican es como puedo actualizar la base de datos de la tabla online cuando no haya visitantes dentro de la pagina del chat y asi escriba en el archivo.txt que "Hay 0 usuarios en linea"

Cabe aclarar que va agregando los datos a la tabla y al terminar su secion va borrando los datos en la BD pero no borra la ultima secion y se queda guardada.

La verdad no se si me complique la vida, pero no quiero usar un contador gratuito.

Solo quiero mostrar el # de visitantes que estan "en este tiempo en linea" en la pagina del chat y mostrarlo en otras paginas sin aumentar el contador.

Espero y me ayuden a resolver algo, agrego que no soy muy experto en PHP pero he estado leyendo las funciones y eso ahora si que me declaró un novato.