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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  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 1,340 veces)
Leguim


Desconectado Desconectado

Mensajes: 690



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.497



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: 690



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.497



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: 690



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
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.561


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

- Telegram: @WHK102 - Website: https://yhojann.cl/
Leguim


Desconectado Desconectado

Mensajes: 690



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.497



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
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.561


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

- Telegram: @WHK102 - Website: https://yhojann.cl/
@XSStringManolo
<svg/onload=alert()>
Colaborador
***
Desconectado Desconectado

Mensajes: 2.290


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

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 3,261 Último mensaje 14 Agosto 2009, 22:35 pm
por xalupeao
[Pregunta]: Detectar cuando se presiona determinada tecla
Desarrollo Web
Leguim 4 928 Último mensaje 17 Marzo 2019, 04:03 am
por #!drvy
[Resuelto] [Pregunta]: ¿Un usuario se puede imprimir una $_SESSION?
PHP
Leguim 4 670 Último mensaje 1 Octubre 2019, 03:33 am
por engel lex
[Pregunta]: mejorar las $_SESSION'S
PHP
Leguim 1 407 Último mensaje 7 Octubre 2019, 14:05 pm
por MinusFour
[Pregunta]: Comportamiento de las $_SESSION
PHP
Leguim 4 486 Último mensaje 3 Agosto 2021, 04:47 am
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines