21/04/2014, 11:16
|
| | 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 |