Ver Mensaje Individual
  #11 (permalink)  
Antiguo 21/04/2014, 11:16
zyxer
 
Fecha de Ingreso: abril-2014
Mensajes: 72
Antigüedad: 10 años, 7 meses
Puntos: 5
Respuesta: ¿Contar el tiempo de un usuario que lleva conectado?

Si yo fuera tú lo manejara con Ajax, Sesiones y Base de Datos:

1) Cuando el usuario inicia sesión, guardas la fecha y otros tres campos (que aquí llamaré tiempoConexon, regaloAbierto y horaVerificacion), en tiempoConexion guardas el número 1800 (cantidad de segundos que tiene media hora), en horaVerificación guardas la hora actual y en regaloAbierto pone un cero.

2) En el mismo DIV donde le mostrarás la opción de "abrir regalo" pones una llamada a Ajax, por ejemplo, al archivo recibeRegalo.php

3) En el en el evento onLoad del body mandas que la función Ajax del paso anterior se active y en se momento y se vuelva a activar cada X tiempo (yo sugeriría cada 15 segundos, pero tú decides).

4) En el archivo recibeRegalo.php pones:

4.1) Que lea los campos establecidos en el primer paso.

4.2) Si regaloAbierto es igual a 1 termina la ejecución, de lo contrario continua...

4.3) Si no hay fecha igual a la del día actual, inserta los datos del paso 1 y termina la ejecución...

4.4) Si tiempoConexion es igual o menor que cero, muestra la opción de abrir regalo y termina la ejecución.

4.5) Si la diferencia de tiempoVerificacion y la hora actual es de más de 1 minuto (los 15 segundos del paso 3 más algún tiempo por seguridad) termina la ejecución. De lo contrario le reste a tiempoConexion la diferencia en segundos entre tiempoVerificacion y la hora actual (haces UPDATE en la base de datos).

4.6) Si tiempoConexion llega a cero o menos, que muestre la opción de abrir regalo y termine la ejecución.

5) Asegúrate de que cuando el usuario haga clic en "Abrir regalo", actualices regaloAbierto igual a 1.

NOTA: Es importante que en el paso 3 pongas que se active en ese momento y no solo cada X tiempo, para cuando el usuario cambie de página.

NOTA 2: Cuida que cuando el usuario inicie sesión no inserte siempre los datos del paso uno, sino que verifique si hay un campo fecha igual al día actual, y si no hay, entonces lo inserte.

NOTA 3: Si quieres puedes hacer algo para que los usuarios conectados luego de las 11:30 (hora del servidor) reciban el regalo si duran los 30 minutos seguidos... pero el cómo hacerlo lo dejo a tu imaginación.

NOTA 4: Te recomendaría mostrar siempre la hora del servidor, a fin de que un usuario en otro país sepa a qué atenerse.


Espero haber sido de ayuda, y que puedas implementarlo. Me gustó la idea!

Última edición por zyxer; 21/04/2014 a las 11:24