Foros del Web » Programando para Internet » PHP »

Contador de visitas

Estas en el tema de Contador de visitas en el foro de PHP en Foros del Web. Hola amigos !!! tengo el siguiente contador que me genera el numero en imagen. Pero este codigo tiene un fallo, y es que cada vez ...
  #1 (permalink)  
Antiguo 22/01/2008, 02:41
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Contador de visitas

Hola amigos !!! tengo el siguiente contador que me genera el numero en imagen.
Pero este codigo tiene un fallo, y es que cada vez que se clica en cualquier enlace de mi web www.cosins.es, el contador sigue sumando.
Como puedo hacer para que solo aumente por usuario o por sesion o por ip? Y segun el que utilice, si vuelve a entrar en mi página a los 30 min, subirá el contador?
PHP
Código:
  // Declaramos el archivo, en donde se acumulará el numero de visitas.
  $destino = "numero.dat";
  // Abrimos el archivo como solo de lectura 
  $abrir = fopen($destino,"r");
  // Leemos el contenido del archivo, cabe decir que la función fread(int fp, int length), lo que hace, es leer hasta length bytes del archivo referenciado en el apuntador fp.
  $cuenta = trim(fread($abrir,filesize($destino)));
  
  if ($cuenta != "") $cuenta++;
  else $cuenta = 1;
	// Una vez leido cerramos la conexión al archivo.
  @fclose($abrir);
	// Abrimos nuevamente el archivo,pero ahora para agregar datos.
  $abrir = fopen($destino,"w");
  @fputs($abrir,$cuenta);
	$contador.=$visitant;
  for($i=0;$i<strlen($cuenta);$i++) {
    $imagen = substr($cuenta,$i,1);
    $contador.= "<img alt='$imagen ' src='images/comptador/$imagen.gif'>";
  }
  @fclose($abrir);
  print $contador;
Como podeis ver en numero.dat guardo el numero de visitante.
Necesito crear otro archivo que me guarde ip's o cualquier otra cosa? o mejor hacerlo en una pequeña base de dato access?

Necesito ayuda.
  #2 (permalink)  
Antiguo 22/01/2008, 02:48
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Contador de visitas

Antes de aumentar el contador, comprueba si existe una variable de sesion (llamala como te de la gana). Si existe, no aumentes el contador. Si no existe, aumentas el contador y creas la variable de sesion.

Se supone que las sesiones tienen un tiempo de expiracion desde el ultimo uso.

Y access no es una base de datos.
  #3 (permalink)  
Antiguo 22/01/2008, 02:51
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Contador de visitas

Cita:
Iniciado por DarkJ Ver Mensaje
Antes de aumentar el contador, comprueba si existe una variable de sesion (llamala como te de la gana). Si existe, no aumentes el contador. Si no existe, aumentas el contador y creas la variable de sesion.

Se supone que las sesiones tienen un tiempo de expiracion desde el ultimo uso.

Y access no es una base de datos.
Podrias poner un ejemplillo?


Mil gracias
  #4 (permalink)  
Antiguo 22/01/2008, 03:51
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Contador de visitas

desearia no tener que crear ningun otro archivo, solo comparar la session o algo, pero no se como hacerlo.
Mil gracias
  #5 (permalink)  
Antiguo 22/01/2008, 06:40
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Contador de visitas

Hola de nuevo!!
Me explicaré un poco mejor, ya que llevo toda la mañana intentando codigo y mas codigo y no consigo nada.
Utilizo templates, es decir que al final de cada pagina php mía llamo a la include "template.html.php"; que lo que me hace es pintar el html con todas las variables que anteriormente se ha ido cargando
En el template.html.php tengo en una de las lineas que llamo a include "contador.php"; que contien el siguiente codigo
Código:
	// Declaramos el archivo, en donde se acumulará el numero de visitas.
	$destino = "numero.dat";
	// Abrimos el archivo como solo de lectura 
	$abrir = fopen($destino,"r");
	// Leemos el contenido del archivo, cabe decir que la función fread(int fp, int length), lo que hace, es leer hasta length bytes del archivo referenciado en el apuntador fp.
	$cuenta = trim(fread($abrir,filesize($destino)));
	
	if ($cuenta != "") $cuenta++;
	else $cuenta = 1;
	// Una vez leido cerramos la conexión al archivo.
	@fclose($abrir);
	// Abrimos nuevamente el archivo,pero ahora para agregar datos.
	$abrir = fopen($destino,"w");
	@fputs($abrir,$cuenta);
	$contador.=$visitant;
	for($i=0;$i<strlen($cuenta);$i++) {
		$imagen = substr($cuenta,$i,1);
		$contador.= "<img alt='$imagen ' src='images/comptador/$imagen.gif'>";
	}
	@fclose($abrir);
	print $contador;
la cuestión es que necesito una variable de sesion que me guarde algo del usuario, ya sea su ip un número o cualquier otra cosa que me sirva paraque en contador.php lo pueda comparar para que incremente o no el contador.

He probado con poner en conf_ini.php (archivo que llamo al inicio de todas las páginas) por ejemplo index.php, galeria.php, contacta.php, etc...
Código:
session_start();
$numero = rand(1,10000);
$array_numero[]=$numero;
$_SESSION['numero']= $array_numero[0];
$_SESSION['usuario']="user";
$ip_usuario[] = ($_SERVER['REMOTE_ADDR']);
Pero con esto consigo que cada vez que cargo una pagina me canvia el numero y no consigo controlarlo.
A ver si alguien puede hecharme una mano, a ser posible con codigo

Gracias
  #6 (permalink)  
Antiguo 22/01/2008, 06:49
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Contador de visitas

Código PHP:
session_start();
if (!isset(
$_SESSION['visita'])) {
// aqui contabilizas una visita nueva en tu fichero
// y acabas asignando un valor a $_SESSION['visita']
$_SESSION['visita']=1;

  #7 (permalink)  
Antiguo 22/01/2008, 07:02
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Contador de visitas

este codigo debo ponerlo junto al contador, o en algun otro sitio?

Gracias y perdon por ser tan nub
  #8 (permalink)  
Antiguo 22/01/2008, 07:12
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Contador de visitas

he estado probando y lo he puesto en el contador.php
Código:
session_start();
if (!isset($_SESSION['visita'])) { 
	// aqui contabilizas una visita nueva en tu fichero y acabas asignando un valor a $_SESSION['visita'] 
	$_SESSION['visita']=1; 
	// Declaramos el archivo, en donde se acumulará el numero de visitas.
	$destino = "numero.dat";
	// Abrimos el archivo como solo de lectura 
	$abrir = fopen($destino,"r");
	// Leemos el contenido del archivo, cabe decir que la función fread(int fp, int length), lo que hace, es leer hasta length bytes del archivo referenciado en el apuntador fp.
	$cuenta = trim(fread($abrir,filesize($destino)));
	
	if ($cuenta != "") $cuenta++;
	else $cuenta = 1;
	// Una vez leido cerramos la conexión al archivo.
	@fclose($abrir);
	// Abrimos nuevamente el archivo,pero ahora para agregar datos.
	$abrir = fopen($destino,"w");
	@fputs($abrir,$cuenta);
	$contador.=$visitant;
	for($i=0;$i<strlen($cuenta);$i++) {
		$imagen = substr($cuenta,$i,1);
		$contador.= "<img alt='$imagen ' src='images/comptador/$imagen.gif'>";
	}
	@fclose($abrir);
	print $contador;
}
else{
	// Declaramos el archivo, en donde se acumulará el numero de visitas.
	$destino = "numero.dat";
	// Abrimos el archivo como solo de lectura 
	$abrir = fopen($destino,"r");
	// Leemos el contenido del archivo, cabe decir que la función fread(int fp, int length), lo que hace, es leer hasta length bytes del archivo referenciado en el apuntador fp.
	$cuenta = trim(fread($abrir,filesize($destino)));
	// Una vez leido cerramos la conexión al archivo.
	@fclose($abrir);
	// Abrimos nuevamente el archivo,pero ahora para agregar datos.
	$abrir = fopen($destino,"w");
	@fputs($abrir,$cuenta);
	$contador.=$visitant;
	for($i=0;$i<strlen($cuenta);$i++) {
		$imagen = substr($cuenta,$i,1);
		$contador.= "<img alt='$imagen ' src='images/comptador/$imagen.gif'>";
	}
	@fclose($abrir);
	print $contador;
}
en la condicion if si se cumple incrementa, sino solamente imprime el numero que ya tenia.
Tendria que poner algun elseif? porque cada vez que entro en index.php me sigue aumentando el contador.
Almenos has conseguido que cuando clique en fotos o cantacta no se autoincremente el contador.

Gracias de nuevo
  #9 (permalink)  
Antiguo 22/01/2008, 09:02
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Contador de visitas

ok tema zanjado ya em funciona.
El session_start(); lo he puesto en el conf_ini.php y el codigo que me has facilitado en el contador.ph y ya me funciona.

muchas gracias

PD: por si quieres ver la prueba www.cosins.es
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:13.