Estimados amigos y maestros:
Quisiera saber como puede implementar el tiempo de duración de una sesion en PHP. Busque en el manual de PHP.NET pero no encontré una funcion que lo haga.
Alguien sabe como?
De antemano gracias.
| |||
Podes modificar los segundos a travez del php.ini en la linea que especifica el session.gc_maxlifetime=1440; O definirlo en cada una de las paginas, antes del session_start, con ini_set("session.gc_maxlifetime","1440"); (1440 son segundos) |
| ||||
Estimados amigos porque no me resulta esto que me dijo el amigo zeus_bsas? coloque esto antes de la funcion session_start(); pero no pasa nada. Alguna sugerencia? SALUDOS.
__________________ ________________________________________ Ugho. |
| |||
Creo que alguna vez tambien me paso algo parecido. Recuerdo que en ese entonces el problema que mencionas se me soluciono especificando tambien, ademas de la duracion, la ubicacion en donde seria guardada la sesion. Proba con esto y contame: Código PHP: Última edición por zeus_bsas; 20/10/2003 a las 11:09 |
| ||||
Estimado amigo he hecho lo que me dices pero nada: ------------------------------------------------- ini_set("session.gc_maxlifetime","10"); $ruta='/sesiones'; session_save_path("$ruta"); session_start(); ---------------------------------------------------- Incluso he puesto la ruta completa de mi servidor LINUX osea: $ruta='/var/www/....'; pero nada. Me sale el siguiente error: ----------------------------------------------------------------------- Warning: open(/sesiones/sess_ba7e0af1464ba3da469a7e1d3ec9062b, O_RDWR) failed: No existe el fichero o el directorio (2) in Unknown on line 0 Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/sesiones) in Unknown on line 0 --------------------------------------------------------------------------- Que hago? que me falto? SALUDOS
__________________ ________________________________________ Ugho. |
| |||
Me parece que estas poniendo mal la ruta. Si este script esta ubicado en el mismo nivel de la carpeta sesiones, la ruta deberia ser $ruta='sesiones'; Y si el script esta ubicado en un directorio y éste esta en el mismo nivel de la carpeta sesiones, la ruta seria $ruta='../sesiones'; No se si influye, pero por las dudas prestale antencion a las mayusculas y minusculas de los directorios. Probalo. Última edición por zeus_bsas; 20/10/2003 a las 12:59 |
| ||||
Bueno amigo tenias razon con la ruta pero ahora me sale el siguiente error: ---------------------------------------------------- Warning: open(sesiones/sess_ba7e0af1464ba3da469a7e1d3ec9062b, O_RDWR) failed: Permiso denegado (13) in /var/www/..../nuevo/sid_verifica.inc.php on line 159 ------------------------------------------------------------ donde sid_verifica.inc.php es el archivo PHP donde creo mis sesiones a todas la paginas. Alguna idea de cual es mi problema ahora? Espero que me tengas paciencia.... SALUDOS
__________________ ________________________________________ Ugho. |
| |||
Para los problemas de rutas .. usa a ser posible rutas ABSOLUTAS .. en tu caso: /var/www/..../nuevo/sesiones y dale permisos de escritura/lectura (chmod 777 o algo menos) al directorio sesiones si es que no lo tiene. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Como te dijo Cluster, revisa los permisos para ese directorio. Ahi yo no te puedo ayudar porque nunca estuve del lado de la configuracion del server. Para los tipos de ruta, tambien hacele caso a Cluster, lo mio fue un mero ejemplo que sirvio para mostrate el error que llevabas hasta ese momento. |
| ||||
Muchas gracias amigos por sus respuestas, en realidad ahora no me sale ningun error, le di permiso 777 a mi carpeta de sesiones, !!PERO!! cuando le pongo el tiempo de sesion no hace nada, le coloco 5 segundos y al cabo de los 5 sigue con la sesion abierta (no muere la sesion). Debo hacer algo mas? SALUDOS.
__________________ ________________________________________ Ugho. |
| |||
Pero .... ¿Que esperas que haga? Es decir .. sin cerrar el navegador .. ¿esperas que muera la sesión? .. En otras palabras .. que "por si solo" si recargas página (pasados ese tiempo) la sesión muera?... Bueno, el caso no es tan sencillo .. hay várias directivas más del tema sesiones que afectan a todo esto .. De la combinación de estas así funcionará tu sistema .. Lee este mensaje: http://www.forosdelweb.com/showthrea...hreadid=147464 Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
Bueno esta bien pero no te enojes... En realidad nunca habia trabajado con el "tiempo" de sesiones y pense que era como me dices , que mueria la sesion al cabo del tiempo que se le asigna y que al recargar la pagina ya no existía la sesion, pero me equivoque. Voy a documentarme mas.... SALUDOS
__________________ ________________________________________ Ugho. |
| |||
Ni mucho menos me enojo .. solo te preguntaba si ese era el concepto que tenias. El tema que planteas de "recargar página" y que la sesión expiere se suele solventar usando un campo extra en tu BD asignado a tu usuario conectado donde guardas la fecha/hora que entró al sistema (se autentificó) .. (lo puedes guardar en una variable de sesión) y lo compruebas con la fecha/hora actual para determinar si todavía es válida su sesión o no .. (haciendo una resta de esas fechas junto con el tiempo que determines de "expiración" de tus sesiones). Así trabajan por ejemplo los sistemas que indican cuantos usuarios hay "on line" .. (salvo que hacen una consulta a la BD y .. ese dato podrías llevarlo en una variable de sesión también para tu caso ..). Si no me equivoco, en las FAQ's tienes un ejemplo. Guardar el dato de la fecha que entró tu usuario por última vez al sistema te vendría bien para hacer sistemas que tengan encuenta la "concurrencia" (dos "login" con el mismo usuario/password = cuenta .. a la vez mientras uno está ya en el sistema ..) Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Pero Cluster, mira que a mi me funciona tal cual quiere Ugho. En mi sitio, si no realizas ninguna accion en 15 minutos la sesion muere. Y si recargas la pagina lo podes ver, porque te manda a otro lugar por no tener la sesion. A mi nunca me hizo falta nada mas. Claro que la cookie sigue viva mientras el navegador este abierto, pero si no se realiza ninguna peticion la cookie no deberia seguir sirviendo de acuerdo al tiempo de vida de la sesion. Asi es como me funciona a mi, y creo que es lo que quiere Ugho, y si a mi me anda, hay que encontrarle la vuelta para que a el tambien. |
| |||
Si, zeus_bsas .. tambien depende del tiempo que tenga de expiración de sus cookies: session.cookie_expire o algo así .. Para evitar problemas con cookies (si se usan para propagar el SID) .. el tiempo de expiración siempre lo he controlado así como he comentado. El problema que plantea gestionar el tiempo de expiración así .. es que en ese intervalo de tiempo. Si cierras tu página y vuelves atras (o bien usas un link con el SID propagado) vas a entrar denuevo en tu sesión activa .. Peligroso en sistemas publicos (lease: cibercafes, universidades.. etc). Yo uso 0 sec. en tiempo de expiración (cookies y gc_ ..) y el tiempo lo controlo desde "código". Una aplicación más de gestionar el tiempo de expiración así sería la de hacer un panel de control donde un administrador "mate" sesiones de X usuario (actualizando el tiempo de inicio de la sesión) Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |