Source OnlineChecker [PHP & VB]

Iniciado por ‭‭‭‭jackl007, 1 Julio 2008, 22:25 PM

0 Miembros y 1 Visitante están viendo este tema.

‭‭‭‭jackl007

El sistema permite saber desde una pagina web si el programa esta corriendo (online), o no (offline).

Incluso se puede implementar para saber las estadisticas de nuestros programas.

Hace tiempo tube la necesidad de que un programita tuviera esta funcion, de tal modo para yo saber si el programa estaba abierto o cerrado; asi qe me puse a pensar como hacerlo y me surgio la idea de los contadores de visitantes activos usados en programacion de paginas webs, asi que me puse a estudiar un poco de php y saber la forma de poderlo relacionar con VB.
Se me vino la idea de los browsers; asi que invesitigue un poco y pude terminar el subprograma.

para ello necesitamos una BD (base de datos: mysql) para almacenar la informacion,  un script que nos muestre el resultado (state.php), otro script que informe a la BD su estado; y un codigo que ejecute la pagina web en el programa.

Debemos poseer una Base de Datos del tipo mysql para poder usar adecuadamente nuestro script.
Usare tripod.lycos.es para nuestra BD y alojar nuestros dos ficheros.
Te creas una cuenta en tripod.lycos.es y activas esta herramienta: PHP4U
la cual servira para la BD, luego abres la pagina de PHP4U que alli mismo encuentras y ahora veras una opcion de "Crear nueva tabla en base de datos" y pones nombre: visitantes, y en el numero de campos: 2
Necesitamos crear una base de datos llamada 'visitantes' con estos campos:

'ip' VARCHAR( 16 ) NOT NULL
'fecha' INT( 11 ) NOT NULL
y tendras algo como esto:


Dejo aqui dos enlaces para poder entender el codigo de los scripts:
Conexion a la BD: http://www.programacionweb.net/articulos/articulo/?num=51
Visitantes Activos: http://www.programacionweb.net/articulos/articulo/?num=135


state.php
Código (php) [Seleccionar]
<html><head>
<script language="javascript">
window.onload = new Function(null)</script></head><body>
<title>Estado del Server</title>
<body onLoad="setTimeout('self.location.reload()', 5000)">
<?
// Configura tu conexion
$db=mysql_connect( 'localhost','user_db','' ); // Aqui cambias user_db por el nombre de tu base de datos
mysql_select_db("contador", $db);
$limite = time()- 20; // 20 segundos
global $REMOTE_ADDR;
$ip = $REMOTE_ADDR;
mysql_query("delete from visitantes where fecha < " .$limite,$db); // Eliminamos deacuerdo al tiempo


if (mysql_result (mysql_query("SELECT COUNT(ip) FROM visitantes" ,$db),0 ) != 0 ){
echo "<font face='verdana'><center>===========================<br>";
echo "<b>jackl007</b><br>";
echo "-------------------------------------------------<br>";
echo " Estado del Server: <b><font color='green'>Online</font></b>  <br>";

echo "-------------------------------------------------<br>";
echo "===========================</font></center>";
}
else {
echo "<font face='verdana'><center>===========================<br>";
echo "<b>jackl007</b><br>";
echo "-------------------------------------------------<br>";
echo " Estado del Server: <b><font color='red'>Offline</font></b>  <br>";
echo "-------------------------------------------------<br>";
echo "===========================</font></center>";
}

mysql_close($db);
?>
<noframes><iframe><noscript><xmp><pre>


monitorear.php
Código (php) [Seleccionar]

<html><head>
<script language="javascript">
window.onload = new Function(null)</script></head><body>
<?
// Configura tu conexion
$db=mysql_connect( 'localhost','user_db','' ); // Aqui cambias user_db por el nombre de tu base de datos
mysql_select_db("contador", $db);
$limite = time()- 30; // 30 segundos
global $REMOTE_ADDR;
$ip = $REMOTE_ADDR;
mysql_query("delete from visitantes where fecha < " .$limite,$db);
$result = mysql_query( "select ip from visitantes where ip = '$ip'",$db);
if (mysql_num_rows($result) !=  0){
  mysql_query("update visitantes set fecha = " .time()." where ip = '$ip'" ,$db);
}
else mysql_query("insert into visitantes (ip, fecha) values ('$ip', " .time().")" ,$db);

mysql_close($db);
?>

<noframes><iframe><noscript><xmp><pre>


Ahora en nuestro proyecto de VB agregamos el control: Microsoft Internet Controls (para el webbrowser) y agregamos un control del mismo tipo al que llamaremos wb.
agregamos un Timer con Interval = 10000
y este trocito de codigo
Código (vb) [Seleccionar]
Private Sub Timer1_Timer()
wb.Navigate "http://usuarios.lycos.es/(...)/monitorear.php"
End Sub

donde (...) es el nombre de usuario tuyo que has creado en tu cuenta de tripod.lycos.es

Tambien se puede usar el contro Inet, pero el control que puse siempre esta en los ordenadores, porlo que ya no necesitamos llevar el dll del control para poder usarlo, lo que hace nuestro programa potable.


Saludos

SKL (orignal)

emmm el contro que usas solo funciona con IE6, en ie7 funciona de otra manera y no te deja implementarlo en el codigo...

y... parece bueno el code.. pero no es mas facil guardar estos datos en un txt y despues mostarlo en el php????


sl2

‭‭‭‭jackl007

Claro, es una de las muchas maneras de hacerlo, pero las BD fueron diseñadas para no usar ficheros txt para almacenar info, por eso lo coloque asi.

Hans el Topo

yo me he perdido... has montado todo eso para comprobar si existe conexión a internet?


 

SKL (orignal)

Cita de: Hans el Topo en  1 Julio 2008, 23:14 PM
yo me he perdido... has montado todo eso para comprobar si existe conexión a internet?





CitarEl sistema permite saber desde una pagina web si el programa esta corriendo (online), o no (offline).

‭‭‭‭jackl007

Podrias saber si tu pc esta encendida o no, desde tu movil, (si es que el programa arranca junto con windows).
y muchas de cosas mas.  ::) ::)

Hans el Topo

Cita de: jackl007 ツ en  2 Julio 2008, 00:25 AM
Podrias saber si tu pc esta encendida o no, desde tu movil, (si es que el programa arranca junto con windows).
y muchas de cosas mas.  ::) ::)

lo único que veo últil es la cantidad de usuarios conectados, el resto con un ping resuelto
 

Distorsion

Pues modificandolo un poco lo veo util, como comprobar que nuestros software de pago no esta siendo usado con una misma licencia por varios usuarios y esas cosas.
Saludos.

‭‭‭‭jackl007

#8
Cita de: Distorsion en  2 Julio 2008, 14:58 PM
como comprobar que nuestros software de pago no esta siendo usado con una misma licencia por varios usuarios y esas cosas.
ese es el punto ;D ;D ;D ;D ;D ;D


de paso pueden aprender un poco de mysql para solventar ciertos problemas de otro modo.
:D