|    
			
				21/04/2014, 11:16
			
			
			  | 
  |   |  |  |  Fecha de Ingreso: abril-2014 
						Mensajes: 72
					 Antigüedad: 11 años, 6 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
     |