Ver Mensaje Individual
  #27 (permalink)  
Antiguo 08/03/2010, 21:19
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 3 meses
Puntos: 150
Respuesta: Cerrar sesiones automáticamente

Yo ya no se como explicarlo xD , aqui un tutorial de sesiones pero que tambien explica bien su funcionamiento:
http://www.desarrolloweb.com/articulos/321.php

Luego probad a hacer un echo time(); vereis que devuelve un valor en segundos, es como la fecha y hora pasada a segundos.

Ok, ¿para que queremos sesiones y time()? vamos al lio.

1. Cuando un jugador loguea probablemente se crean para el unas variables de sesion como pudieran ser $_SESSION["ID"] , $_SESSION["NICK"] que con un session_start(); al inicio de todas las paginas se "propaga".

2. Pues tambien al loguear vamos a crear una variable de sesion que sea el tiempo en segundos justo de esta noche (el dia en que estemos) a las 23:59. Para eso usaremos mktime(), que es una funcion a la que le pasamos el dia, mes, año, hora, minutos y segundos y nos devuelve ese valor en segundos que he explicado antes. Nos hara falta la funcion date(); con la que sacaremos el dia, mes, año, etc. Si no lo usaron nunca prueben a hacer un echo date("d:m:y"); segun los valores que le demos nos devuelve el dia, mes, año, o solo uno de ellos, incluso tambien la hora. Prueben con echos!!!!!!! echo es vuestro amigo y os enseña muchas cosas xD

$_SESSION["TIMERELOGIN"]=mktime(23,59,59, date("m"), date("d"), date("Y"))+2;

Si estais programando en un script/juego que no es vuestro, pues tendreis que rebuscar!! el script donde el jugador loguee.

3. Ya tenemos en $_SESSION["TIMERELOGIN"] el momento en segundos en el cual un jugador deberia ser forzado a reloguear ok. Entonces en todas nuestras paginas (ya sea con un include o pegandola en todas las paginas), es cuando hacemos la comprobacion, que propiamente dicho seria algo como:

-Si (el momento actual es mayor o igual al momento guardado en la variable de sesion TIMERELOGIN) entonces {Cerramos la sesion, o bien redireccionamos a un php donde se realicen las acciones oportunas y ademas generemos el nuevo valor para TIMERELOGIN}



Prueben cosas, lean documentacion de estas funciones, no se, yo me retiro xD