Foros del Web » Programando para Internet » PHP »

Eliminar registro cuando se cierra página

Estas en el tema de Eliminar registro cuando se cierra página en el foro de PHP en Foros del Web. Hola a todos. Resulta que tengo un loguin de usuario que cuando entra al sistema los registro en una base de datos. Ahora bien; mi ...
  #1 (permalink)  
Antiguo 14/03/2006, 09:53
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 21 años, 5 meses
Puntos: 1
Eliminar registro cuando se cierra página

Hola a todos.
Resulta que tengo un loguin de usuario que cuando entra al sistema los registro en una base de datos.
Ahora bien; mi idea es que cuando ese mismo usuario se va de la página (ya sea que va a otra dirección web o directamente cierra el explorador) el registro de esa base de datos se elimina.

¿se puede hacer?
__________________
CSSBoulevar
Recursos para diseñadores y programadores webs
  #2 (permalink)  
Antiguo 14/03/2006, 10:29
Avatar de DjFaramir  
Fecha de Ingreso: febrero-2003
Ubicación: La Plata, Buenos Aires, Argentina
Mensajes: 131
Antigüedad: 21 años, 9 meses
Puntos: 0
en el foro de asp preguntaron lo mismo y ya le respondieron... es asp.. pero la teoria es la misma para php...
http://www.forosdelweb.com/f15/ejecutar-server-cerrar-ventana-368930/
__________________
See you... y Tolkien... mucho Tolkien...
  #3 (permalink)  
Antiguo 14/03/2006, 10:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
El caso es que "confiar" o depender de la ejecución de un evento en el lado del "cliente" (por javascript .. ante un evento tipo onUnload() disparar tu función javascript que llame a tu script del lado del servidor (PHP/ASP/Perl .. o lo que sea) no es bueno a nivel que dependes mucho de las condicones del "cliente" (de que ejecute Javascript .. de que no cancele la operación .. en fin .. problemas que no están bajo tu control).

Exite otra técnica para tal fin que sólo depende del lado del "servidor" .. eso sí con su problema própio. Se trata de considerar un tiempo de "inactividad" de un usuario, considerando que en esto de las páginas "dinámicas" .. es el servidor al que se le pide la página (o scritp PHP/ASP.. etc) .. este (el "servidor") la genera y se entrega al "cliente" (navegador) para que este interprete su parte quedando totalmente desconectado cliente de servidor hasta la próxima petición al servidor: un nuevo link que se ejecuta, una recarga de página .. etc. En este caso, se almacena para el usuario activo la última hora de actividad contra el servidor (de esa recarga de página .. de esa ejecución de tal script .. etc), y se compara con la fecha/hora actual + el tiempo que nosotros consideremos como "no ha realizado cierta actividad desde hace tanto tiempo". Si se sobrepasa ese tiempo, podemos considerar a nuestro usuario como que ya no está en el sistema.

Ese tiempo es justamente nuestro "problema" y "margen de error" para estos cálculos de tiempos. Pero no dependemos de nada del "cliente" y tenemos control "centralizado" sobre las sesiones en curso y sus tiempos de actividad en el sistema.

Un saludo,
  #4 (permalink)  
Antiguo 14/03/2006, 11:12
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 21 años, 5 meses
Puntos: 1
Hola Cluster. Pues esa sería la solución indicada...
Pero como sería el código? y que se toma como "actividad del usuario"?
__________________
CSSBoulevar
Recursos para diseñadores y programadores webs
  #5 (permalink)  
Antiguo 14/03/2006, 11:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por Flashera
Hola Cluster. Pues esa sería la solución indicada...
Pero como sería el código? y que se toma como "actividad del usuario"?
Código no tengo a mano implementado .. pero la filosofía te la describí por si te animas a intentar implementarlo.

actividad del usuario= tiempo actual de ejecución de cierto script/página.

Es decir, en cada script de tu aplicación y teniendo en cuenta que tu ya identificas a tu usuario (por sesiones, cookies .. etc) y tienes un registro de usuarios (en una BBDD de preferencia) .. tendrías que crear un campo nuevo ea esa tabla de registro de usuarios (o tabla aparte relacionada ..) donde a cada ejecución de tus scritps (de todos) por el "usuario" activo en tu sistema .. dejes la hora/fecha actual

Hablando en "SQL" sería algo tipo:

UPDATE tabla SET fecha_ultima_actividad = NOW() WHERE usuario=$_SESSION['usaurio']

(un ejemplo para mysql .. doy por hecho que usarías campos tipo DATETIME .. etc)

Esa sentencia SQL deberías ejecutarla en todos los scripts de tu aplicación.

Por otro lado .. y antes de ejecutar esa sentencia, deberías verificar que si el valor de ese campo "fecha_ultima_actividad" con la fecha/hora actual + el tiempo que tu definas como que el usuario ya no está haciendo nada en el sistema (unos minutos? .. unos segundos? .. horas? .. como tu decidas es mayor que ese tiempo de "inactividad" que vas a considerar.

Un saludo,
  #6 (permalink)  
Antiguo 15/03/2006, 10:23
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 18 años, 8 meses
Puntos: 0
la teoria es buena y es conocida , el problema es kien ejecuta el script ke "desabilita" usuarios , no he encontrado nada de PHP corriendo como un proceso , siempre se ejecuta con llamadas .

si alguien tiene la solucion , porfa ke la diga
  #7 (permalink)  
Antiguo 15/03/2006, 10:34
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 19 años, 5 meses
Puntos: 2
La "limpieza" de los usuarios inactivos se debe correr con cada llamada a tu script, alejate de la idea de que esta limpieza se ejecute cada cierto tiempo (es lo primero piensan) tu no te preocupes por eso, mas bien deberías preocuparte por insertarlo al script y por más que tu script pase horas sin ser llamado cuando lo haga se ejecuta la limpieza y "borrara" o "eliminara" a todos aquellos que ya quedaros inactivos. Códigos hay varios en la red, pero nunca encuentras uno que se adapte completamente a tu necesidad y debes estas modificandolo, por esta razón siempre recomiendo (por más que no lo tengas claro del todo) que pongas manos a la obra e intentes realizarlo.

Saludos y suerte.
  #8 (permalink)  
Antiguo 15/03/2006, 11:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por DarioDario
La "limpieza" de los usuarios inactivos se debe correr con cada llamada a tu script, alejate de la idea de que esta limpieza se ejecute cada cierto tiempo (es lo primero piensan) tu no te preocupes por eso, mas bien deberías preocuparte por insertarlo al script y por más que tu script pase horas sin ser llamado cuando lo haga se ejecuta la limpieza y "borrara" o "eliminara" a todos aquellos que ya quedaros inactivos. Códigos hay varios en la red, pero nunca encuentras uno que se adapte completamente a tu necesidad y debes estas modificandolo, por esta razón siempre recomiendo (por más que no lo tengas claro del todo) que pongas manos a la obra e intentes realizarlo.

Saludos y suerte.
Eso es cierto, de hecho esa "llamada" siempre se originará .. ya sea por el script que uses (código) para visualizar esos usuarios activos .. o por el usuario que continua interactuando en el sistema (haciendo llamadas).

Un saludo,
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 21:53.