Foros del Web » Programando para Internet » PHP »

problema con contador de visitas

Estas en el tema de problema con contador de visitas en el foro de PHP en Foros del Web. Hola a todos los del FORO Tengo un contador de visitas usando BD el contador me funciona perfectamente, el problema que tengo es que al ...
  #1 (permalink)  
Antiguo 15/03/2004, 09:51
 
Fecha de Ingreso: octubre-2003
Ubicación: BolivianitA
Mensajes: 235
Antigüedad: 20 años, 6 meses
Puntos: 0
problema con contador de visitas

Hola a todos los del FORO

Tengo un contador de visitas usando BD el contador me funciona perfectamente, el problema que tengo es que al momento de actualizar la página el contador se ingrementa en una unidad si voy a otro link y vuelvo a la página principal el contador se vuelve a incrementar como podría solucionar este problema.

Saludos
__________________
rocita

Última edición por rocita; 15/03/2004 a las 09:56
  #2 (permalink)  
Antiguo 15/03/2004, 11:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usa cookies, o sesiones y/o con registro de IP's y gestionando tiempos de expiración ..

Empieza con cookies (es lo más simple) y de ahí si quieres te metes con el tema de registrar IP's por si tus clientes (navegadores visitantes) no aceptan cookies.

Se trata sólo de registrar una variable en una cookie y ver si ya está creada dandole un tiempo de expiración el cual consideraras como visita a contabilizar denuevo ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 15/03/2004, 15:30
 
Fecha de Ingreso: octubre-2003
Ubicación: BolivianitA
Mensajes: 235
Antigüedad: 20 años, 6 meses
Puntos: 0
saludos CLUSTERCITO

El registro de visitas las tengo que almacenar en una base de datos por lo que uso un contador de visitas en usuarios registrados en mi base de datos, usando SESIONES como llegaria controlar esa parte ?

estoy registrando una session, una vez verificado que el usuario este registrado en la BD uso
Código PHP:
session_register("ingreso_portal");
$ingreso_portal=1
luego incluyo: utro archivo que se llama imdex.php

Código PHP:
if(isset($ingreso_portal)){
$sql="UPDATE  ingresos SET nro_ingresos = nro_ingresos + 1" WHERE id =$id_ingreso;
$res=mysql_query($sql); 
unset(
$ingreso_portal); 
una vez modificado el contador elimino ingreso_portal pero no me funciona o que lógica tendria que usar ?
__________________
rocita
  #4 (permalink)  
Antiguo 15/03/2004, 15:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Mas bien sería algo tipo:

Código PHP:
<?
session_start
();
if (!isset(
$_SESSION['ingreso_portal'])){
   
$_SESSION['ingreso_portal']="da igual"// da igual el valor por qué nos basamos en la existencia de la variable .. no en su valor.
// tu lógica de conteo de la visita....
}

?>
Es decir .. Si no está definida tu variable de sesión .. contabilizas la visita y continuas el flujo del script (programa) .. si está definida no contabilizas (si está creada la sesión es por qué está en tu sitio pasando de una página a otra . .o en la que entra recargó la página ..)

Y ..por supuesto no borrar la variable de sesión creada .. sino, no tiene sentido el sistema .. se trata de "crear" esa variable de sesión y mantenerla por el tiempo que use tu sitio (y/o recargue páginas) para no contabilizar nuevas visitas.

Pero .. basta que el usuario cierre todas las ventanas de tu sitio y entre denuevo para que tu sistema contabilice una nueva visita .. Si eso ya no te importa sigue usando sesiones .. si eso te importa usa cookies en lugar de sesiones.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 15/03/2004 a las 16:01
  #5 (permalink)  
Antiguo 15/03/2004, 18:55
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Un sistema que se puede empear tambien sin utilizar cookies o sesiones etc, es utilizar solo base de datos e IP

aqui te dejo un simple codigo de ejemplo, que por supuesto puede ser mucho mas mejorado

Código PHP:

// tipica funcion para sacar la IP
function ip()
{
      if (
getenv("HTTP_X_FORWARDED_FOR")) 
          
$ip   getenv("HTTP_X_FORWARDED_FOR");
        else 
           
$ip   getenv("REMOTE_ADDR");
        return 
$ip;
}



    
/// la conexion esta creada anteriormente
    
    
    
define('ONLINE_TABLE','tabla_online');
    
define('MAX_TIME',120); // tiempo que actualiza los users online en segundos
    
    
    //borrarmos todos los users que lleven mas de 2 minutos, (puede ser menos o mas)
    
    
$sql "DELETE FROM ".ONLINE_TABLE." WHERE entrada < ( ".time()." - ".MAX_TIME.") ";
    
mysql_query($sql) or die (mysql_error());
    
    
//entramos los datos a la BDD se entra tb la pagina, por si se quiere hacer con la instrucion necesaria saber los que estan en cada pagina
    
$sql_insert "INSERT INTO ".ONLINE_TABLE." (ip,entrada,pagina) VALUES('".ip()."', '".time()."','".$_SERVER['REQUEST_URI']."')";
  
    
mysql_query($sql) or die (mysql_error());
    
    
    
$sql "SELECT * FROM ".ONLINE_TABLE;  
    
$result mysql_query($sql) or die (mysql_error());
    
    
//aqui solo nos da el numero de visitas activas, si se quiere hacer que nos de por paginas, pues se pone la sentencia adecuada al SELECT
    
$online mysql_num_rows($result);
     
    echo 
"users online"$online
espero que te sirva

Un saludo
  #6 (permalink)  
Antiguo 16/03/2004, 07:06
 
Fecha de Ingreso: octubre-2003
Ubicación: BolivianitA
Mensajes: 235
Antigüedad: 20 años, 6 meses
Puntos: 0
gracias cluster .. per tengo una dudita .. en que momento registras la sesión ingreso_portal yo lo hacia de otro modo pero a ratos tenia algunas fallas por eso tabién la duda:


Cita:
Mensaje Original por Cluster
Mas bien sería algo tipo:

Código PHP:
<?
session_start
();
if (!isset(
$_SESSION['ingreso_portal'])){
   
$_SESSION['ingreso_portal']="da igual"// da igual el valor por qué nos basamos en la existencia de la variable .. no en su valor.
// tu lógica de conteo de la visita....
}

?>
Gracias de antemano
__________________
rocita
  #7 (permalink)  
Antiguo 16/03/2004, 07:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues como te expliqué como funciona el código la sesión la creo cuando no existe y el código en cuestión lo deberías incluir en todas las páginas de tu sitio ...

(suponiendo que estés contabilizando accesos a todas las páginas de tu sitio? ... o sólo contabilizas accesos de tu usuario a tu sistema?).

Si sólo contabilizas los accesos de tu usuario a tu sistema (que hagan su autentificación) No es necesario sesiones .. tal sólo contabiliza con tu código (el de tu BD) ese acceso .. pero todo depende de como tengas estructurado tu sistema de validación ..

Lo normal es que hagas algo tipo:

formulario login -> valida-autentifica-usuario.php -> pagina_autentificada.php

Es decir .. redireccinas automáticamente desde tu "valida-autentifica-usuario.php" a su destino .. sea la misma página (para eso ya tendrás tu validación de que está o no autentificado tu usuario para mostrarle/redireccionar hacia tu formulario de login?) .. Así que si tu contador lo incluyes en el proceso de validación (al validarlo correctamente) no tienes por qué tener problemas con recargas de páginas y conteos extra de tu contador .. ese script de proceso se ejecuta por entero (deberia) en el servidor (PHP) y según su resultado redireccionar automáticamente (header ("location: tal sitio.php") ) hacia donde corresponda ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 17:34.