tiempos, remembers, et al.
Buenas,
Es evidente que el "Remember me" no va (iba?), y (si no me equivoco) sería (era?) preferible que fuese. Este post comenta alguna cosa más.
He estado leyendo un poco la documentación de la wiki, y he estado haciendo pruebas con la mía, y la información que tengo es la siguiente (si ya os lo sabéis, perdón por las trivialidades):
- Si no se marca la casilla de "Remember me", las sesiones duran el tiempo que indique la variable session.gc_maxlifetime del archivo /etc/php.ini o análogo, que en el caso de nuestro servidor toma el valor de 1440 segundos (24 minutos).
- Tikiwiki lee el valor de esta variable, y ajusta el tiempo de edición a este valor. Por eso hay siempre 24 minutos para editar las páginas, y cuando falta un minuto pega un aviso. He de decir que a veces he perdido cosas porque he cambiado de escritorio y no me ha llegado el aviso, pero creo que es un tiempo razonable y que "ya está bien".
- En el punto anterior, hay que entender que si mientras estás editando vas haciendo otras cosas en la web (en otras pestañas, e.g.), Tikiwiki te echará de la edición en los 24 minutos, aunque no te haya echado de la sesión. Si no has hecho nada más en ese rato (y no has marcado el "Remember me" al entrar en la sesión), te echará de la edición y de la sesión a la vez
- El "Remember me" lo que hace es crear una cookie con el nombre del usuario (creo que esto ha mejorado en la 1.10 ó 1.11), la fecha de caducidad y alguna cosa más.
- La fecha de caducidad la calcula sumando al tiempo actual el valor de "sessiontime" que hemos escogido en el menú de administración del login (actualmente, 1 mes). Por lo que he podido comprobar, la fecha la crea bien, es decir: he hecho un login con "Remember me", he mirado la cookie que se me creaba, y tenía una fecha de expiración correcta (¡aunque ligeramente distinta a la parte del "valor" que la debería reiterar!).
- La cookie es independiente del php: si la sesión acaba porque se pasa de los 24 minutos sin hacer nada, pero la cookie aún no ha caducado, se debería seguir conectado; y si la cookie caduca antes de que pasen los 24 minutos (imaginad un sessiontime de 5 minutos, por ejemplo), se sigue conectado hasta que caduque la sesión por el php.
- La creación y captura de la galleta son realizadas por las respectivas funciones "create_user_cookie" y "get_user_by_cookie", que están definidas en las líneas ~1820-1850 de la librería lib/userslib.php.
¿Qué está (estaba?) pasando? Pues que, por lo que parece, el código php es incapaz de tomar la información de la cookie que tiene el explorador. Esto se puede deber a que
a) no consigue leer la cookie,
b) lo que espera leer en la cookie no lo encuentra,
c) otro.
Aquí es donde me he inspirado, y me he dado cuenta de que si el "Remember me domain" era precarios.org, el "Remember me path" tenía que estar vacío, ya que según la documentación de tikiwiki (mucho más sencilla que buscar por los php's) indica que el "Remember me" sólo es válido en direcciones del estilo "Remember me domain"/"Remember me path".
Y parece ser que funciona ligeramente mejor: mientras no cierres el explorador (en linux puedes incluso hibernar, en windows no), la sesión se mantiene. Pero si cierras el explorador y dejas pasar la media hora, muy a pesar de que la galleta siga donde tiene que estar, no hace caso.
Lo peor es que el problema no sé hasta qué punto es de esta galleta. Si con el explorador abierto la borro y actualizo, se me desconecta, pero (continuando con el explorador abierto) si la vuelvo a añadir vuelvo a aparecer conectado. Y si cierro el explorador y lo vuelvo a abrir tras la media hora, y vuelvo a hacer login con el "Remember me", la única diferencia de esta galleta con la anterior son las fechas.
Cuando tenga un rato miraré el resto de galletas que hay por allí, pero cualquier indicación será bienvenida
Saludos,
E.