Foros del Web » Programando para Internet » PHP »

Registrando eventos

Estas en el tema de Registrando eventos en el foro de PHP en Foros del Web. Hola a todos, estoy realizando (mas bien intentando..) un sistema para registrar los eventos que realizan los los usuarios de mi web en esta. Este ...
  #1 (permalink)  
Antiguo 30/03/2005, 10:13
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 13 años
Puntos: 0
Pregunta Registrando eventos

Hola a todos, estoy realizando (mas bien intentando..) un sistema para registrar los eventos que realizan los los usuarios de mi web en esta.

Este sistema de registro lo estoy realizando mas bien para aprender, pero tambien para registrar ciertas acciones poco "legales" de los usuarios (o invitados), como intentar entrar en secciones restringidas, o probar pirulas como intentar dar nombres a la variable que carga el modulo.

Con todo esto, me quedo con centenares de entradas "legales", que despues de ser vistas asi por encima se pueden eliminar.
Entonces estaba pensando en montar un sistema de limpieza "automatico", pero no se por donde empezar, ya que no consigo detectar cuando el usuario sale de la pagina si no es por el lugar correcto.
He leido varios posts de este foro donde se dan soluciones como dar un tiempo de caducidad a los registros, pero no tengo idea de como realizarlo.

Tambien se habla del sistema de propagación del SID para aplicar un metodo u otro. Yo CREO que mi servidor lo pasa por cookies: yo no escribo el SID manualmente por url ni tampoco se reescribe solo, ademas segun la configuracion php del servidor creo recordar q era por cookie.

Yo habia pensado en que al salir el usuario se ejecutara un script que decidiera si mantener en la base de datos esa "coleccion" de eventos o en canvio mantenerla y dejar a decision del administrador el borrarla manualmente.
Espero que alguien me sepa ayudar!
Saludos
  #2 (permalink)  
Antiguo 30/03/2005, 11:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En una página HTML desde javascript tienes el evento: onUnload() para determinar que se cerró dicha página ..

Pero, en PHP no tienes "evento" para ver si el cliente sigue ahí o no en esa página o ejecutando tal script (que tal vez no tenga salida y sea un proceso puro PHP).

Por eso se suele recomendar que se determine un tiempo de "inactividad" para determinar que el usuario no está "activo" en el sistema ..

Recuerda que PHP lo que hace es; bajo petición .. se pide cierto script.php .. se ejecuta este en PHP (en el servidor) y su resultado es entregado al cliente (navegador por ejemplo) si hay salida (normalmente siempre hay "salida" aunque no genere tu script nada en sí mismo). Por eso .. el control sobre el "cliente" se pierde y hay que "esperar" a otra petición al servidor (de otro script.php) para "saber": "ops! el usuario sigue ahí en el sistema". Esas "peticiones" se pueden hacer automáticas refrescando cierta página (frame oculto que llame a un script.php concreto, podría ser...) .. pero no es lo optimo por consumo de recursos de tu servidor ...

Podrías probar si te sirve sólo con javacript (ante el envento onUnload() .. llamar a tu script.php de "limpieza") .. pero si estás registrando eventos "mal intencionados" perfectamente podrán saltarse esa rutina javacript ...

El tema de "sesiones" para este caso no aplica ..No hay función en sesiones "nativa" que te devuelva el tiempo que le queda a tal cliente .. Sólo nos basamos en que "exista o no" y su valor si lo requerimos para determinar si expiró .. Las sesiones son "únicas" para quien las crea (usuario/cliente que las crea).. además de la explicación que más o menos te mostré de como PHP funciona .. no aplica para nada controlar sesiones para este tema.

Un saludo,
  #3 (permalink)  
Antiguo 30/03/2005, 11:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Otro detalle al margen sobre tu sistema de registro de eventos ...

Si realmente descartas los eventos "correctos" .. Deberías validar ese evento como "correcto" en función del resultado esperado y ahí sólo registrar los eventos "no correcto" ..

Por supuesto que si se te "escapó" alguna validación .. ni tu registro de enventos registraría dicho evento "malicioso"... Pero .. si tu aplicación valida por ejemplo cosas como "si tal variable que llega por el URL es un numero .. " si está en el rango . .no la registres como evento .. hazlo si te llega un "string" .. o se salió del rango (ejemplo .. pasas un ID=1 de un registro .. y ese no existe .. ahí lo registras .. o si llego y hago ID=blabla o ID=-122 ... )

Es una idea para "aligerar" la gran cantidad de datos que registras .. y quedarte con "eventos" potencialmente "peligrosos" que en teoría deberían ser los menos.

Un saludo,
  #4 (permalink)  
Antiguo 30/03/2005, 11:20
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 13 años
Puntos: 0
Jeje, la verdad es que es una buena solución el solo registrar lo "malicioso", pero como tengo "fichados" ciertos usuarios (temas personales ;)), pues tengo un poco de curiosidad por que lugares visitan. Pero por lo demàs eso seria lo ideal si señor.

Sobre lo del tiempo de inactividad, mi duda surge sobre CUANDO se comprueba ese tiempo, ya que como tu mismo has dicho cada script php se ejecuta al momento de que el cliente hace una petición.

Digamos que en inactivos.php tengo la rutina que mira q usuarios estan inactivos... (mirar la fecha del ultimo evento de tal usuario i comprobar que ha pasado el intervalo maximo para "echarlo").
Cuando ha de ejecutarse este script?? En cada peticion de mi index.php??
(Es un web modular donde todo pasa por index.php).
Si fuera asi... esta funcion debveria comprobar TODOS los usuarios que en teoria estan conectados para poder pensar lo contrario verdad?
  #5 (permalink)  
Antiguo 30/03/2005, 11:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En tu sistema "modular" .. tendrías que ejecutar dicho proceso en cada petición a tu index.php que es por donde pasa todo .. Si no fuese un sistema modular, en cada script.php de tu aplicación.

El procedimiento sería:
* Consultar tus usuarios en el sistema por ese campo de "actividad" (tipo fecha/hora)
* Si es superior ese tiempo al que tu determines como "ya no está activo" .. haces lo que tengas que hacer .. No sé si tu idea es también realizar un contador de "usuarios activos" ... o sólo lanzar aquí el proceso de "limpieza" que mencionas.
* Si es menor .. lo actualizas con la fecha/hora actual ..


Un saludo,
  #6 (permalink)  
Antiguo 30/03/2005, 18:33
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Solo... en lo que te mencionó Cluster, aquí hay un código que quizá puedas adaptar a tus necesidades:
http://www.forosdelweb.com/showthrea...=282742&page=2
... igual en las FAQ hay un script que te permite visualizar cuántos "usuarios activos" tiene tu página...

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 19:17.