elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.  (Leído 4,651 veces)
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
(Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.
« en: 2 Noviembre 2019, 18:57 pm »

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.

Código
  1. ini_set('session.cookie_lifetime', '0');
  2. ini_set('session.gc_maxlifetime', '0');
  3.  

Pero como puedo hacer que determinada $_SESSION dure 2 horas sólo esa session...


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.
« Respuesta #1 en: 2 Noviembre 2019, 20:38 pm »

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 Desconectado

Mensajes: 720



Ver Perfil
Re: (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.
« Respuesta #2 en: 2 Noviembre 2019, 20:53 pm »

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.
« Respuesta #3 en: 3 Noviembre 2019, 01:13 am »

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 Desconectado

Mensajes: 720



Ver Perfil
Re: (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.
« Respuesta #4 en: 3 Noviembre 2019, 01:53 am »

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

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.
« Respuesta #5 en: 3 Noviembre 2019, 01:57 am »

El time va dentro del a session, puedes agregarle todas las variables que quieras, la sesion es simplemente un array llegar y llenar.

https://www.php.net/manual/es/book.session.php#90351
En línea

Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.
« Respuesta #6 en: 3 Noviembre 2019, 04:00 am »

Es decir, esto se puede hacer?

Código
  1. $_SESSION['test'] = 'Este es un mensaje';
  2. $_SESSION['test'] = time();
  3.  

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.
« Respuesta #7 en: 3 Noviembre 2019, 04:12 am »

es eso... y en cada solicitud

Código
  1. if(time() - $_SESSION['test'] > 7200){
  2.  #destruir sesión
  3. }
  4.  
  5.  
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
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.
« Respuesta #8 en: 3 Noviembre 2019, 05:32 am »

Citar
¿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:

Código
  1. $_SESSION['abc'] = 'def';

O de manera explícita:

Código
  1. $_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:

Código
  1.  
  2. if(!isset($_SESSION['data']))
  3. {
  4.    // Inicia la sesión
  5.    $_SESSION = array(
  6.        'data' => array(
  7.            'usuario' => array(
  8.                'id'     => 1,
  9.                'nombre' => 'Demo'
  10.            ),
  11.            'permisos' => array(
  12.            )
  13.        ),
  14.        'time' => time()
  15.    );
  16. }
  17.  
  18. if((time() - $_SESSION['time']) > 7200)
  19. {
  20.    // Sesión expirada
  21.  
  22.    // Elimina la sesión
  23.  
  24.    // Redirecciona al mismo script para renovar la sesión
  25.    header('Location: /index.php');
  26.  
  27.    // Finaliza el script (previene el escape de información)
  28.    exit;
  29. }
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: (Pregunta): Como hacer que una $_SESSION determinada dure 2 horas.
« Respuesta #9 en: 3 Noviembre 2019, 08:24 am »

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 💖

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pregunta con $_SESSION php
PHP
xalupeao 5 4,467 Último mensaje 14 Agosto 2009, 22:35 pm
por xalupeao
[Resuelto] [Pregunta]: ¿Un usuario se puede imprimir una $_SESSION?
PHP
Leguim 4 2,559 Último mensaje 1 Octubre 2019, 03:33 am
por engel lex
[Pregunta]: mejorar las $_SESSION'S
PHP
Leguim 1 1,886 Último mensaje 7 Octubre 2019, 14:05 pm
por MinusFour
[Pregunta]: Comportamiento de las $_SESSION
PHP
Leguim 4 4,115 Último mensaje 3 Agosto 2021, 04:47 am
por MinusFour
[Pregunta]: Impedir que una $_SESSION en particular se destruya
Desarrollo Web
Leguim 2 3,222 Último mensaje 21 Junio 2022, 19:49 pm
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines