Foros del Web » Programando para Internet » PHP »

Controlar la salida de un usuario en una sesion

Estas en el tema de Controlar la salida de un usuario en una sesion en el foro de PHP en Foros del Web. ¿Como puedo controlar la salida de un usuario de una sesion? Podria hacerlo con connection_aborted(). Gracias...
  #1 (permalink)  
Antiguo 21/04/2004, 03:44
 
Fecha de Ingreso: abril-2004
Ubicación: los palacios (Sevilla)
Mensajes: 42
Antigüedad: 20 años
Puntos: 0
Controlar la salida de un usuario en una sesion

¿Como puedo controlar la salida de un usuario de una sesion?
Podria hacerlo con connection_aborted(). Gracias
__________________
ponce
  #2 (permalink)  
Antiguo 21/04/2004, 05:22
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 20 años
Puntos: 0
Cuando un script PHP se está ejecutando se activa el estado NORMAL. Si el cliente remoto se desconecta, se pasa al estado ABORTED. Esto suele ocurrir cuando el usuario pulsa en el botón STOP del navegador. Si se alcanza el límite de tiempo impuesto por PHP (ver set_time_limit()), se pasa al estado TIMEOUT.

Puedes decidir si quieres que la desconexión de un cliente cause que tu script sea abortado. Algunas veces es cómodo que tus scripts se ejecuten por completo, incluso si no existe ya un navegador remoto que reciba la salida. El comportamiento por defecto es sin embargo, que tu script se aborte cuando el cliente remoto se desconecta. Este comportamiento puede ser configurado vía la directiva ignore_user_abort en el fichero php3.ini, o también con la función ignore_user_abort(). Si no le espeficicas al PHP que cuando un usuario aborte lo ignore, tu script terminará su ejecución. La única excepción es si tienes registrada un función de desconexión usando la función register_shutdown_function(). Con una función de desconexión, cuando un usuario remoto pulsa en el botón STOP, la próxima vez que tu script intenta mostrar algo, PHP detecta que la conexión ha sido abortada y se llama a la función de desconexión. Esta función de desconexión también se llama al final de la ejecución de tu script cuando se ha ejecutado normalmente, de manera que si quieres hacer algo diferente en caso de que un cliente se haya desconectado, puedes usar la función connection_aborted(). Esta función devuelve TRUE si la conexión fue abortada.
  #3 (permalink)  
Antiguo 21/04/2004, 05:47
 
Fecha de Ingreso: abril-2004
Ubicación: los palacios (Sevilla)
Mensajes: 42
Antigüedad: 20 años
Puntos: 0
Gracias por la respuesta.
Probaré como me has dicho.

Para hacer un carrito, ¿voy guardando los datos de la compra en la sesion del usuario y luego a la BD, o directamente an la BD?.

Yo lo he ido insertando en la BD directamente, pero si el usuario se va sin comprar se me queda todo almacenada en la BD y sin comprar, por eso pense que si se desconeta borro sus datos de la BD, y no quiero utilizar las cookies por si alguien las tiene desactivada.
__________________
ponce

Última edición por ponce; 21/04/2004 a las 05:50
  #4 (permalink)  
Antiguo 21/04/2004, 07:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Para hacer un carrito, ¿voy guardando los datos de la compra en la sesion del usuario y luego a la BD, o directamente an la BD?.
Normalmente si trabajas con sesiones .. almacenarías todo en la sesión hasta que el usuario finalice su compra/pedido .. momento en el que lo guardarías en tu BD. Si lo vas guardando en tu BD a medida que se ingresan artículos al carrito .. si el usuario aborta la compra te quedarían esos registros incompletos que posteriormene deberías hacer rutinas para borrar esos procesos incompletos: ya sea con la detección del "aborto" del script en curso o bien (mejor creo yo) ejecutar taréas programadas bajo un cron-job (unix) que borren esos registros que no se completaron (te haría falta un campo tipo "flag" para ponerlo a "1" cuando finalice el proceso .. o bien andar moviendo datos desde tablas "temporales" si termina el proceso ..

La BD sería útil para permitir a tu usuario (previo registro antes de comprar y autentificación para realizar compras) que continuara una compra en cualquier momento y la finalice cuando deses.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 23/04/2004, 01:32
 
Fecha de Ingreso: abril-2004
Ubicación: los palacios (Sevilla)
Mensajes: 42
Antigüedad: 20 años
Puntos: 0
Gracias por tu respuesta, esa era mi gran duda, ahora ya podre terminarlo.

Muchas gracias.
__________________
ponce
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 12:58.