elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
11 Octubre 2008, 11:52  



+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderadores: дٳŦ٭, Red Mx)
| | |-+  Como hacer un contador de visitas en linea
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Como hacer un contador de visitas en linea  (Leído 3120 veces)
memosky

Desconectado Desconectado

Mensajes: 33


Ver Perfil
Como hacer un contador de visitas en linea
« en: 21 Marzo 2006, 06:39 »

Buenas a todos (as) espero que me puedan ayudar con esta pregunta, la verdad nose como se hace un contador en linea de los usuarios que estan actualmente visitando la patina no un contador comun sino los que estan presente en ese momento.... se agradece cualquier tipo de ayuda ya que lo he intentado pero no me funciona muchas gracias
En línea
дٳŦ٭
GNU/Linux Infrastructure Specialist
Moderador
*****
Desconectado Desconectado

Mensajes: 4.481


see u in the hell cowboy


Ver Perfil WWW
Re: Como hacer un contador de visitas en linea
« Respuesta #1 en: 21 Marzo 2006, 07:24 »

Hola.

Con archivos:

Archivo activos.php
Código:
<?php
 $tiempo_logout = 600;
 $arr = file("usuarios.dat");       // INDICAMOS EL ARCHIVO
 $contenido = $REMOTE_ADDR.":".time()."\n";
 for($i=0;$i<sizeof($arr);$i++) {
 $tmp = explode(":",$arr[$i]);
if (( $tmp[0] != $REMOTE_ADDR ) && (( time() - $tmp[1] ) < $tiempo_logout )) {
 $contenido .= $REMOTE_ADDR.":".time()."\n";  // CALCULAMOS EL TIEMPO
 }
 }
 $fp = fopen("usuarios.dat","w");  // ABRIMOS EL ARCHIVO
 fputs($fp,$contenido);
 fclose($fp);  // LO CERRAMOS
 $array = file("usuarios.dat"); //LO MOSTRAMOS
 $USUARIOS_ACTIVOS = count($array);
  if($USUARIOS_ACTIVOS=="1") { echo "1 user activo"; }
 else { echo $USUARIOS_ACTIVOS. " users activos"; }
 ?>

Archivo prueba.php
Código:
<?php include("activos.php"); ?>

Archivo usuarios.dat
Código:
127.0.0.1:1122183298


Con base de datos:

Archivo index.php
Código:
<script language="javascript" type="text/javascript" src="activos.php">
</script>

Archivo activos.php
Código:
<?php
$host="localhost";
$user_database = "root";
$password_database = "";
$base_datos="visitas";
$minutos_activo=20;
function visitantes_activos() {
global $ip_visita,$host,$user_database,$password_database,$base_datos,$minutos_activo;

//Momento actual
    $ahora = time();

    //conectamos a la base de datos
    $conectado = mysql_connect($host,$user_database,$password_database);
    mysql_select_db($base_datos,$conectado);

    //borramos los registros de las ip inactivas
    $limite = $ahora-$minutos_activo*60;
    $consulta = "delete from visitas where fecha < ".$limite;
    mysql_query($consulta);

    //miramos si el ip del visitante existe en nuestra tabla
    $consulta = "select ip, fecha from visitas where ip = '$ip_visita'";
    $resultado = mysql_query($consulta);

    //si existe actualizamos el campo fecha
    //si no existe insertamos el registro correspondiente a esta visita
if (mysql_num_rows($resultado) != 0){
$consulta = "update visitas set fecha = ".$ahora." where ip = '$ip_visita'";
} else {
$consulta = "insert into visitas (ip, fecha) values ('$ip_visita', $ahora)";
}
    mysql_query($consulta);

    //contamos el numero de visitas activas
    $consulta = "select ip from visitas";
    $resultado = mysql_query($consulta);
    $visitas = mysql_num_rows($resultado);

    //liberamos memoria
    mysql_free_result($resultado);

    //devolvemos el resultado
    return $visitas;
 }

// Tomamos la ip del visitante
$ip_visita=getenv($REMOTE_ADDR);

// Vemos el numero de visitantes activos
$visact=visitantes_activos();

// Efectuamos una salida en JavaScript
print "document.write('".$visact."');\n";
?>

Archivo sql.sql
Código:
CREATE TABLE visitas (
   ip varchar(15),
   fecha int(14) unsigned DEFAULT '0' NOT NULL,
   KEY ip (ip)
);

Mira el resultado (solo con mas opciones como los usuarios registrados, usuarios en el chat y los ultimos 3 usuarios registrados):




Espero que te sirva alguno.

Posdata: Antes hubieras buscado en google, hay muchisisimos.

Saludos desde México D.F.
« Última modificación: 21 Marzo 2006, 09:08 por ––––•(-• ÌNG_ÅMÇ™ •-)•–––– » En línea



La gente sueña por la noche con volar, nosotros salimos por la noche y volamos. JMF.

¡¡¡VIVA MÉXICO!!!
memosky

Desconectado Desconectado

Mensajes: 33


Ver Perfil
Re: te pasaste vale
« Respuesta #2 en: 21 Marzo 2006, 17:22 »

Muchas gracias pero busque y ninguno me funciono ahora voy a porbar este saludos y gracias de nuevo
En línea
el-brujo
Adm
*****
Desconectado Desconectado

Mensajes: 14.044


La libertad no se suplica, se conquista


Ver Perfil WWW
Re: Como hacer un contador de visitas en linea
« Respuesta #3 en: 21 Marzo 2006, 20:03 »

también hay varios sin usar bases de datos.

En esta ocasión no usaremos ninguna BD, usaremos un archivo llamado usuarios.dat Entonces, vamos a crear nuestro script PHP y lo llamamos activos.php

Código:
<?php

$tiempo_logout = 600; // segundos tras los cuales un usuario es marcado como inactivo

$arr = file("usuarios.dat");
$contenido = $REMOTE_ADDR.":".time()." ";

for ( $i = 0 ; $i < sizeof($arr) ; $i++ )
{
$tmp = explode(":",$arr[$i]);
if (( $tmp[0] != $REMOTE_ADDR ) && (( time() - $tmp[1] ) < $tiempo_logout ))
{
$contenido .= $REMOTE_ADDR.":".time()." ";
}
}

$fp = fopen("usuarios.dat","w");
fputs($fp,$contenido);
fclose($fp);

$array = file("usuarios.dat");

$USUARIOS_ACTIVOS = count($array);
?>


Bueno, explicamos paso a paso lo que hace el script:

   1. Lo primero es sacamos el usuarios.dat a un array
   2. Creamos el archivo de texto con las IP y la hora de visita de los que visitan nuestra web
   3. "Borramos" de ese archivo los que llevan más de $tiempo_logout sin actividad
   4. Escribimos el fichero
   5. Declaramos una variable $USUARIOS_ACTIVOS que contiene el número de usuarios activos del momento
   6. Jeje....así de sencillo ;)

La forma de utilizar el Script, es muy sencilla, al principio de cualquier página de tu web, pones <?php include("activos.php") ?> y donde quieras mostrar el número de usuarios, usas la variable $USUARIOS_ACTIVOS.

Otro ejemplo:

activos.php

Código:
<?
// Usuarios activos con PHP sin utilizar bases de datos

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

// En usuarios.dat guardaremos el IP y hora en que el usuario inicio la sesión
$arr = file("usuarios.dat");
$contenido = $REMOTE_ADDR.":".time()." ";

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

$fp = fopen("usuarios.dat","w");
fputs($fp,$contenido);
fclose($fp);

$array = file("usuarios.dat");

$USUARIOS_ACTIVOS = count($array);

// Imprimimos la cantiadad de usuarios activos
echo "Hay ".$USUARIOS_ACTIVOS." usuarios activos";
?>

Para que el script funcione correctamente, tendremos que crear el archivo usuarios.dat sin incorporarle nada de contenido y darle permisos de escritura.

En ASP:

 El codigo se debe usar en el archivo Global.asa. No debe ir encerrado entre <% y %> y debe ser lo unico que haya dentro del mismo. (Bueno, no lo unico, pero jugar con el Global.asa no lo recomiendo).

Aqui esta el codigo que va en el Global.asa

Código:
<script language=vbscript runat=server>

Sub Application_OnStart
Application("Activos") = 0
End Sub

Sub Application_OnEnd
End Sub

Sub Session_OnStart
Application.Lock
Application("Activos") = Application("Activos") + 1
Application.Unlock
End Sub

Sub Session_OnEnd
Application.Lock
Application("Activos") = Application("Activos") - 1
Application.Unlock
End Sub

</script>


Y para mostrar la informacion que recoge el Global.asa, o sea para mostrar los usuarios activos como lo hice yo en mi ejemplo, deben poner lo siguiente en la pagina que muestran el dato:

<P>En este momento hay <%=Application("Activos")%> usuario/s en nuestro sitio</P>
En línea

Give peace a chance
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats