Autor
|
Tema: (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas. (Leído 4,651 veces)
|
Leguim
Desconectado
Mensajes: 720
|
Buenos días, de forma global todas mis sessiones las modifique para que duren hasta que el usuario cierre el navegador, luego de eso se borran. ini_set('session.cookie_lifetime', '0'); ini_set('session.gc_maxlifetime', '0');
Pero como puedo hacer que determinada $_SESSION dure 2 horas sólo esa session...
|
|
|
En línea
|
|
|
|
engel lex
|
a la sesion agregale un tiempo y si se accede y el tiempo está vencido, la destruyes... es la forma segura... tambien puedes darle vencimiento a la cookie, pero ya sabes como son las cookies
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Leguim
Desconectado
Mensajes: 720
|
a la sesion agregale un tiempo y si se accede y el tiempo está vencido, la destruyes... es la forma segura... tambien puedes darle vencimiento a la cookie, pero ya sabes como son las cookies
¡Hola, gracias por responder! ¿Como podría agregarle ese tiempo de vida a la $_SESSION? ¿Me podrías dar un simple ejemplo, por favor? Gracias!
|
|
|
En línea
|
|
|
|
engel lex
|
simplemente un almacenas un time() y confirmas si time() menos el tiempo guardado es mayor a 7200 (ya que es en segundos)
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Leguim
Desconectado
Mensajes: 720
|
Creo haber entendido, según lo que entendí es que la $_SESSION guardará un time y luego preguntará si dicho time expiro pero... la $_SESSION tendrá X dato, un ID quizá (por ejemplo)... ese será su contenido no el time()
|
|
|
En línea
|
|
|
|
|
Leguim
Desconectado
Mensajes: 720
|
Es decir, esto se puede hacer? $_SESSION['test'] = 'Este es un mensaje'; $_SESSION['test'] = time();
Por supuesto no de esa manera, obviamente estoy sobre escribiendo en la variable datos diferentes, a lo que me refiero es, ¿esto es lo que me estan diciendo que haga? ¿poner time(); dentro de la $_session? ¿Como podría entonces hacer de dicha session un array? ¿No existe una forma de ponerle un tiempo de vida como se hace en las cookies? Gracias.
|
|
|
En línea
|
|
|
|
engel lex
|
es eso... y en cada solicitud if(time() - $_SESSION['test'] > 7200){ #destruir sesión }
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
WHK
|
¿Como podría entonces hacer de dicha session un array? Aver, creo que debes estudiar un poco más de php. $_SESSION ya es un array y puedes escribir todas las llaves y valores que quieras de manera implícita: $_SESSION['abc'] = 'def';
O de manera explícita: $_SESSION = array('abc' => 'def');
Entonces, dentro de tu array de sesion multidimensional puedes poner todo lo que desees incluyendo un valor de tiempo que puedes ponerlo donde tu quieras y luego haces la comparación y haces un session_destroy(). Por ejemplo: if(!isset($_SESSION['data'])) { // Inicia la sesión 'id' => 1, 'nombre' => 'Demo' ), ) ), ); } if((time() - $_SESSION['time']) > 7200) { // Sesión expirada // Elimina la sesión // Redirecciona al mismo script para renovar la sesión header('Location: /index.php'); // Finaliza el script (previene el escape de información) }
|
|
|
En línea
|
|
|
|
@XSStringManolo
Hacker/Programador
Colaborador
Desconectado
Mensajes: 2.399
Turn off the red ligth
|
Solo añadir que debes poner siempre el session start al principio de todo porque si no, puede dar error. Y que tambien puedes usar session unset en vez de session destroy. Con destroy, borras todo el contenido de session, con unset se la quitas al usuario.
Por ejemplo imagínate que dejas al usuario estilizar tu página web para su perfil y se tira 2 horas configurando sus colores favoritos, fondo de la página, tamaño de texto, descripción... Está hablando por un chat, apuntó cosas... Y se le va la luz o el internet. Si haces destroy automático y el usuario no le dio a guardar, va a perder todo si no le dio a guardar.
En cambio si haces unset, toda la información la sigues teniendo en el servidor y cuando se loggea de nuevo puedes ponerle un mensaje: "Tu última sesión se cerro inesperadamente". Botón RESTAURAR.
|
|
|
En línea
|
Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pregunta con $_SESSION php
PHP
|
xalupeao
|
5
|
4,467
|
14 Agosto 2009, 22:35 pm
por xalupeao
|
|
|
[Resuelto] [Pregunta]: ¿Un usuario se puede imprimir una $_SESSION?
PHP
|
Leguim
|
4
|
2,559
|
1 Octubre 2019, 03:33 am
por engel lex
|
|
|
[Pregunta]: mejorar las $_SESSION'S
PHP
|
Leguim
|
1
|
1,886
|
7 Octubre 2019, 14:05 pm
por MinusFour
|
|
|
[Pregunta]: Comportamiento de las $_SESSION
PHP
|
Leguim
|
4
|
4,115
|
3 Agosto 2021, 04:47 am
por MinusFour
|
|
|
[Pregunta]: Impedir que una $_SESSION en particular se destruya
Desarrollo Web
|
Leguim
|
2
|
3,222
|
21 Junio 2022, 19:49 pm
por MinusFour
|
|