| |||
hola mauled, el modificar session.gc_maxlifetime en el php.ini determinara la vida de la sesion en general, el problema plantea eliminar la sesion despues de un cierto tiempo de inactividad... puedes poner algo asi: este javascript en las cabeceras de todas tus paginas:
Código:
el segundo parametro (el tiempo) esta dado en milisegundos<script> setTimeOut('location.replace("logout.php")',600000); </script> ya en logout.php eliminas la sesion y todo eso Salu2 ![]() |
| |||
el usar un setTimeOut() tiene una cierta desventaja, ya que, por ejemplo, en el caso del llenado de un foirmulario extenso, que nos tome tiempo, la sesion terminara cerrandose y la pagina cambiandose antes de que hayamos terminado... podria hacerse con AJAX, y mostrar un popup donde podria volver a loguearse sin que se cierre la pagina que estaba viendo, o tal vez capturar todos los eventos que sucedan en la pagina, usando tal vez las funciones onChange, onMouseOver, onMouseOut, OnBlur, etc etc... pero seria muy extenso. La idea de popup me parece mas factible, asi no se perderia el contenido de algun formulario o algo que se este editando o haciendo en ese instante Salu2 ![]() |
| ||||
HOlA! AUN NO LOGRO GENERAR QUE LAS SESIONES SE CIERREN SOLAS... =( EL COMANDO <script> setTimeOut('location.replace("logout.php")',600000 ); </script> LO IMPLENTE EN LAS CABEZERAS PERO NO PASA NADA... NOSE K HACER! ...ALGUNA OTR IDEA? :) |
| |||
el comando setTimeOut('action',time) ejecutara accion pasados time milisegundos, por lo que basicamente al pasar 600000 milisegundos, osea 600 segundos -> 10 minutos... tu navegador location.replace('logout.php') se dirigira a la pagina logout.php, de tal manera que en esa pagina podras realizar la eliminacion de la sesion, ya sea usando session_destroy() o con unset($_SESSION['variable']); Por otro lado, tambien podrias usar cookies para almacenar los datos de autentificacion, podrias poner: Código PHP: Luego para verificar si la cookie existe usas el array global $_COOKIE: Código PHP: Salu2 ![]() |
| |||
te lanza algun error?? q pasa? intenta poner algo asi: Código PHP: Código PHP: Si es asi, entonces no veo porque no pueda estar funcionando el codigo que te di en el mensaje anterior,.... Tal vez si posteas algo de tu codigo se podria visualizar mejor el posible problema Salu2 ![]() |
| |||
prueba con este codigo, puesto entre los <head> y </head> <script LANGUAGE="JavaScript"> var pagina="tu_dirreccion" function redireccionar() { location.href=pagina } setTimeout ("redireccionar()", tiempo); </script> donde : tu_direccion es la ruta a la pagina que deseas y tiempo es el tiempo que quieres que pase antes de ser redireccionado a la pagina espero que te sirva, nos vemos |
| ||||
ahi esta mi codigo para que lo puedas chekear. =) mi codigo de session se compone de 4 paginas, las cuales interactuan segun sean necesario... ahi van: 1- mi primera pagina es el Login de user Código PHP: Código PHP: en el siguiente pos pondre las 2 paginas k faltan.... se me acaban los max de caracteres del foro :D |
| ||||
continuacion de lo arriba :D 3- en las paginas de mi sitio, agrego un Código PHP: Código PHP: y por ultimo numero.... 4- en esta pagina cierro la sesion y direcciono a login nuevamente destruyendola completamente... creo :s Código PHP: gracias |
| |||
el uso de setcookie() para autentificar usuarios seria lo ideal... y pues esta funcion te permite setear el teimpo de vida de la cookie Puede ser que tu navegador tenga deshabilitadas las cookies has lo que te dije en el post # 17 para ver si las tienes o no activadas Salu2 ![]() |
| ||||
Espero no estar diciendo una burrada, ya que me extraña que mauled y compañia no lo resuelvan, quizas lo que buscas es esto... Código PHP: Espero que os sirva. Salu2! |
| ||||
no pasa nada! :( mmm ... hice lo k me dijiste pero no paso nada... :(... lo agregue en mi codigo asi ... Código PHP: yo se que ahi excelentes profesionales en este foro! demas que llegamos a un resultado! :D ![]() |
| ||||
no kiero seguir con esto!.... yapo ayudenme un pokito mas..! :D yo creo k talvez ustedes tienen toda la razon y mi sesion esta mal creada.. podrian chekearla y decirme si esta mal?
__________________ sEIK! -Chile- Analista Programador. |
| |||
Cita: No deberías usar session_register() para trabajar con variables de sesión. USA en su defecto: $_SESSION (www.php.net/session)
Iniciado por seik! mmm ... hice lo k me dijiste pero no paso nada... :(... lo agregue en mi codigo asi ... Código PHP: yo se que ahi excelentes profesionales en este foro! demas que llegamos a un resultado! :D ![]() Esto no resuelve tu pregunta incial . .pero es la base para que puedas aplicar algunas sugerencias que te han hecho y uses las sesiones como corresponde (sin problemas de compatibilidad por ejemplo). Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Me parece que están enfocando el tema de "matar" una sesión ante un evento o tiempo del "lado del cliente" .. cosa que NO puede producirse en muchos casos. Por ejemplo .. cuando un script PHP "PURO" (nada que enviar al cliente a ejecutar, ninguna página que generar) tenga que "matar" esa sesión a cierto tiempo .. NO se podrá hacer con las técnicas propuestas de javacript -> forzar a llamar a cierto script PHP. Tampoco funcionará con navegadores con javascript deshabilitados (OK, ¿quedará algún navegador que no tenga javascript habilitado? .. seguro que no o los menos .. pero es otro motivo a tener encuenta). El tratamiento que se le suele dar a "expirar" una sesión -indivitual- (sí, .. individual por qué PHP gestiona las sesiones y su tiempo de expiración en forma global para toda sesión creada en el servidor* es el de ir actualizando el tiempo que el "cliente"** pide una página de tu sitio y contrastar ese tiempo almacenado en algún medio: BBDD o similar que sea "de acceso común" no una variable de sesión por supuesto ya que pertenece -sólo- al cliente que lo crea ... con un tiempo que uno determine como "inactividad del usuario" .. es decir .. el tiempo que nosotros consideremos que si no ha "pedido" alguna página del sitio: por recargar la página, hacer click en un link, enviar un formulario .. etc se le considerará como que ya no está en el sistema expirando su sesión y/o denegando el acceso a tal proceso. Así por ejemplo es como funcionan los sistemas de "usuarios activos" que veran (hasta en las FAQ's de este foro y en mensajes del foro en general) para determinar quien está en el sistema y quien no (sistema: sitio ... web). Como veran, el soporte de sesiones de PHP es "pesimo" en este aspecto, no tiene ese "control fino" de las sesiones creadas que necesitamos muchas veces. Ahora .. el detalle está si en "implementar" uno de estos sistemas (re-inventar la rueda) o usar alguno ya hecho y en función de este "montar" (o desarrollar) tu -aplicación- que use sesiones. Por ejemplo está la classe ADOdb con su manejo de sesiones .. el cual permite almacenar los datos en una BBDD de la sesión que creamos .. sus variables .. control del tiempo de expiración .. "matar" una sesión en forma arbitaria .. ver las sesiones en curso (como para un panel de administración del sistio) .. etc .. etc. Si quieren verlo: http://phplens.com/lens/adodb/docs-session.htm Otro ejemplo: http://www.hawkee.com/snippet.php?snippet_id=1342 --------------------------------- Notas: * session.gc_maxtimelife en combinación con el tipo de propagación del SID (cookies o URL) .. sobre todo del tiempo de expiración de la cookie que PHP crea si se propaga así el SID .. aunque en última instancia quien manda es la directiva mencionada) ** Cliente: PC/navegador que ejecuta tu script PHP o pide una página en general al servidor HTTP. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Como siempre Cluster apareciendo donde mas se le necesita con una gran-brillante idea ![]() seik!, tal y como te mencionó, debes usar $_SESSION para manejar sesiones... Los javascript que se postearon fueron para cerrar una sesion en tiempo real, por asi decirlo, al redireccionar el navegador a una pagina PHP que eliminara los datos de la sesion... Pero como bien lo dices Cluster, existe siempre (aunque parece extraño en estos tiempos) la posibilidad de que el js este deshabilitado.... Cita: No entendi bien, sobretodo la parte en negrita
Iniciado por Cluster El tratamiento que se le suele dar a "expirar" una sesión -indivitual- (sí, .. individual por qué PHP gestiona las sesiones y su tiempo de expiración en forma global para toda sesión creada en el servidor* es el de ir actualizando el tiempo que el "cliente"** pide una página de tu sitio y contrastar ese tiempo almacenado en algún medio: BBDD o similar que sea "de acceso común" no una variable de sesión por supuesto ya que pertenece -sólo- al cliente que lo crea ... con un tiempo que uno determine como "inactividad del usuario" .. es decir .. el tiempo que nosotros consideremos que si no ha "pedido" alguna página del sitio: por recargar la página, hacer click en un link, enviar un formulario .. etc se le considerará como que ya no está en el sistema expirando su sesión y/o denegando el acceso a tal proceso. Se me ocurrio una idea basado en los comentarios de Cluster... pero yo si usaria sesiones para almacenar los tiempos ![]() seik!, tenemos una variable DE SESION llamada ultima_actividad ($_SESSION['ultima_actividad']) que nos guardara el tiempo en el que se realizo el ultimo acceso a cada pagina... Con esta variable, a mi parecer, podemos hallar una diferencia entre ese tiempo y el tiempo del siguiente acceso, para que asi, si excede algun dewterminado tiempo de inactividad, la sesion termine... algo asi: esto al inicio de cada pagina php Código PHP: ![]() Me parece que asi debe funcionar... pero yo guardo todos los tiempos en sesiones... hay algo mal? Salu2 ![]() |