Foros del Web » Programando para Internet » PHP »

PHP OO Cambiar el tiempo de las sesion

Estas en el tema de Cambiar el tiempo de las sesion en el foro de PHP en Foros del Web. Hola buen día he estado buscando como cambiar el tiempo que duran las sesiones activas ya que en el sistema que estoy trabajando estan por ...
  #1 (permalink)  
Antiguo 24/08/2017, 08:37
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Pregunta Cambiar el tiempo de las sesion

Hola buen día he estado buscando como cambiar el tiempo que duran las sesiones activas ya que en el sistema que estoy trabajando estan por defecto, el problema radica en que los usuarios trabajan con con algunos formularios que son muy grandes y por cualquier motivo inician a trabajar llenado la información pero se levantan dejan el equipo una media hora y al regresar quieren continuar pero la sesion expiró, ya he probado usando los siguiente:

ini_set('session.gc_maxlifetime', 3600);
session_set_cookie_params(3600);
session_set_cookie_params(3600,"/");
setcookie("TestCookie", '', time()+3600);

Los he probado de forma individual o juntos pero la sesion expira en media hora o lo que esté por defecto en el servidor y necesito que por lo menos esté activa una hora este el el código que utilizo para hacer login e iniciar las seciones:

Código del login:

Código PHP:
Ver original
  1. <?php
  2.  
  3.     session_start();
  4.     require_once("clases/class.usuario.php");
  5.     $login = new usuario();
  6.     if($login->iniciado() != "")
  7.     {
  8.         $login->redirigir('administracion/index.php');
  9.     }
  10.     if(isset($_POST['submit']))
  11.     {
  12.         $Usuario = strip_tags($_POST['Usuario']);
  13.         $Email = strip_tags($_POST['Email']);
  14.         $Contrasena = strip_tags($_POST['Contrasena']);
  15.         if($login->Ingresar($Usuario,$Email,$Contrasena))
  16.         {
  17.             $login->redirigir('administracion/index.php');
  18.         }
  19.         else
  20.         {
  21.             $error = "¡Datos Incorrectos!";
  22.         }
  23.     }
  24.  
  25. ?>
Método ingresar de mi clase usuarios
Código PHP:
Ver original
  1. public function Ingresar($Usuario,$Email,$Contrasena)
  2.         {
  3.             try
  4.             {
  5.                 $consulta = $this->conexion->prepare("SELECT IdUsuario, Nombres, Apellidos, Usuario, Contrasena, Email, Rol, Estado, Imagen FROM gesco_usuarios WHERE Usuario=:uname OR Email=:umail ");
  6.                 $consulta->execute(array(':uname'=>$Usuario, ':umail'=>$Email));
  7.                 $datosUsuario=$consulta->fetch(PDO::FETCH_ASSOC);
  8.                 if($consulta->rowCount() == 1)
  9.                 {
  10.                     if(password_verify($Contrasena, $datosUsuario['Contrasena']))
  11.                     {  
  12.                         if($datosUsuario['Estado'] == 1)
  13.                         {
  14.                             $_SESSION['Jdp8e8sA2n'] = $datosUsuario['Nombres']."<br/>".$datosUsuario['Apellidos'];
  15.                             $_SESSION['cx7cJPtM4f'] = $datosUsuario['Usuario'];
  16.                             $_SESSION['f66VhVfj68'] = $datosUsuario['Rol'];
  17.                             $_SESSION['fp6D8XNY87'] = $datosUsuario['IdUsuario'];
  18.                             $_SESSION['Jl7IfpaUl8'] = $datosUsuario['Email'];
  19.                             $_SESSION['Km8JgqbVm9'] = $datosUsuario['Imagen'];
  20.                             return true;
  21.                         }
  22.                         else if($datosUsuario['Estado'] == 0)
  23.                         {
  24.                             return false;
  25.                         }
  26.                     }
  27.                     else
  28.                     {
  29.                         return false;
  30.                     }
  31.                 }
  32.             }
  33.             catch(PDOException $e)
  34.             {
  35.                 echo $e->getMessage();
  36.             }
  37.         }
Código que incluyo en cada página php para mantener la sesion en cada página a la que ingreso
Código PHP:
Ver original
  1. <?php
  2.  
  3.     session_start();
  4.     $LaRutaClaseusuario = $_SERVER['DOCUMENT_ROOT'].'/clases/class.usuario.php';
  5.     require_once ($LaRutaClaseusuario);
  6.     $session = new usuario();
  7.    
  8.     if(!$session->iniciado())
  9.     {
  10.         $session->redirigir('irIndex.php');
  11.     }
  12. ?>

No se que puedo hacer para que la sesión se mantenga más tiempo, gracias por pasar.
  #2 (permalink)  
Antiguo 24/08/2017, 10:31
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Cambiar el tiempo de las sesion

Hola MLDGATO,

Yo tuve el mismo problema y al final contacte con los responsables del servidor, estos me dijeron que en ese sitio en concreto, debía hacerlo mediante un archivo .php.ini con este contenido:

Código Apache:
Ver original
  1. session.gc_maxlifetime = 3600

Espero que te sirva...
  #3 (permalink)  
Antiguo 24/08/2017, 11:18
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Cambiar el tiempo de las sesion

Cita:
Iniciado por rbczgz Ver Mensaje
Hola MLDGATO,

Yo tuve el mismo problema y al final contacte con los responsables del servidor, estos me dijeron que en ese sitio en concreto, debía hacerlo mediante un archivo .php.ini con este contenido:

Código Apache:
Ver original
  1. session.gc_maxlifetime = 3600

Espero que te sirva...
Hola muchas gracias, una consulta esto debo colocarlo antes o despues del session_start()? Gracias.
  #4 (permalink)  
Antiguo 24/08/2017, 11:28
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cambiar el tiempo de las sesion

No tengo idea de esto, pero si lo que dice rbczgz es la solucion, creo que no es necesario cambiar el php.ini, sino simplemente usar ini_set:

$sessionTime = 3600;
ini_set("session.gc_maxlifetime",$sessionTime);

Y si tendrias que ponerlo antes que session_start
  #5 (permalink)  
Antiguo 24/08/2017, 12:47
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Cambiar el tiempo de las sesion

Cita:
Iniciado por rbczgz Ver Mensaje
Hola MLDGATO,

Yo tuve el mismo problema y al final contacte con los responsables del servidor, estos me dijeron que en ese sitio en concreto, debía hacerlo mediante un archivo .php.ini con este contenido:

Código Apache:
Ver original
  1. session.gc_maxlifetime = 3600

Espero que te sirva...
Hola probé lo que me dijiste pero me muestra un error:

Parse error: syntax error, unexpected '=' in /home/colegiod/public_html/sigeco/index.php

No espera el símbolo igual.
  #6 (permalink)  
Antiguo 24/08/2017, 12:48
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Cambiar el tiempo de las sesion

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
No tengo idea de esto, pero si lo que dice rbczgz es la solucion, creo que no es necesario cambiar el php.ini, sino simplemente usar ini_set:

$sessionTime = 3600;
ini_set("session.gc_maxlifetime",$sessionTime);

Y si tendrias que ponerlo antes que session_start
Muchas gracias por la respuesta pero anteriormente había probado con el ini_set pero no me funcionó.
  #7 (permalink)  
Antiguo 24/08/2017, 13:25
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Cambiar el tiempo de las sesion

Hola a ambos,

Yo no me refiero a cambiar el php.ini si no a añadir un archivo .php.ini (cuidado con el . inicial) con ese comando, pero lo mejor es que preguntes a quien administra tu hosting de qué forma deberías hacerlo para que te funcione, es lo más certero.
  #8 (permalink)  
Antiguo 24/08/2017, 17:38
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Cambiar el tiempo de las sesion

En algunos servidores no es posible modificar la configuración en tiempo de ejecución y tampoco con un archivo php.ini; lo recomendable sería persistir la sesión mediante cookie. Lee este mensaje para más información.

También te recomendaría revisar el punto anterior en ese tema, porque no parece tener mucho sentido manejar esos índices en tus variables de sesión, que solo te complican al desarrollar.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: clases, php+basedatos, sesiones_en_php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:39.