Archivo htaccess de tiempo de espera de sesión de PHP

Hola, soy nuevo en la programación, pero actualmente estoy trabajando en un problema de tiempo de espera de sesión. Básicamente, mi sesión se agota a pesar de que he cambiado session.gc_maxlifetime. Creo que se está ejecutando otra secuencia de comandos que usa el mismo directorio para almacenar datos de sesión que no tiene el conjunto maxlifetime y, por lo tanto, usará el valor más corto. Para combatir esto, modifiqué el archivo htaccess, pero aún finaliza después de 1 hora y 30 minutos, necesito que dure más. Mi archivo htaccess está debajo. Revisé y probé muchas de las publicaciones relevantes en este foro, pero nada funcionó hasta ahora. Cualquier idea sería muy apreciada.

SetEnv PHPRC /home/rocket/public_html/php.ini

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

<IfModule mod_php5.c>
php_value session.save_path "new/username/php_sessions"
php_value session.gc_maxlifetime "86400"
php_value session.cookie_lifetime "86400"

</IfModule>


# END WordPress

preguntado el 22 de mayo de 12 a las 15:05

¿Qué var_dump(ini_get('session.save_path'));, var_dump(ini_get('session.gc_maxlifetime')); y var_dump(ini_get('session.cookie_lifetime')); mostrar dentro de su script PHP? -

Como nota al margen, sospecho que su última regla de reescritura probablemente debería decir RewriteRule ^.*$ /index.php [L] -

hey, gracias por la respuesta. Erm, ¿estarían esos primeros 3 en php.ini? No soy muy bueno en esto lol, pero soy bastante nuevo en la programación. El último fragmento de código en el que sugirió cambiar RewriteRule no fue escrito por mí y parece funcionar. ¿Ese código afectaría el código de tiempo de espera? -

1 Respuestas

PHP no hace con las cookies de sesión lo que podrías pensar que hace...

php_value session.gc_maxlifetime "86400"

Esto simplemente establece el tiempo después del cual la recolección de basura puede ocurrir, ya que solo hay una posibilidad muy pequeña de que los datos de la sesión ser basura recolectada después de este tiempo es poco probable que sea el culpable.

php_value session.cookie_lifetime "86400"

Esto establece la hora a la que caduca la cookie de sesión... pero no se actualiza en session_start() por lo tanto, si inicia la sesión en una página, eso pone en marcha el reloj. Pasar de una página a otra no restablecerá el "reloj", por lo que una sesión con un cookie_lifetime de 600 caducará 10 minutos después de que se inició no después de 10 minutos de inactividad - usted puede estar viendo este comportamiento.

Su mejor apuesta es establecer php_value session.cookie_lifetime "0" esto significa que la cookie de sesión caducará , solamente cuando el usuario cierra su navegador.

Si desea manejar una caducidad arbitraria que se activa después de un período de inactividad, es mejor hacerlo en el código PHP configurando una variable dentro de la sesión, algo así como $_SESSION['expires'] y verificar/actualizar/manejar eso al comienzo de cada página.

contestado el 22 de mayo de 12 a las 16:05

establecer php_value session.cookie_lifetime "0" se establece en 0. Esto puede sonar muy novato, pero ¿dónde y cómo se hace e $_SESSION['expires']? Honestamente, esta no es mi suite fuerte. Realmente me siento mal preguntando :( - descaradokinkyminx

no después de 10 minutos de inactividad? ¿Qué clase de mierda piensa el diseñador? - J-16 SDIZ

J-16 SDiz: no es una publicación muy útil :( realmente estoy luchando aquí, he estado en esto dos días ahora. - descaradokinkyminx

Gracias por la ayuda, lo probaré y me pondré en contacto contigo :) - descaradokinkyminx

$_SESSION es un PHP superglobal (es una matriz asociativa) que hace referencia a los datos en la sesión, por lo que para establecer un tiempo de caducidad puede hacer algo como if(empty($_SESSION['expires'])) $_SESSION['expires'] = strtotime('+ 10 minutes'); y luego verifique al comienzo del código para ver si la sesión ha expirado... vea "Uso básico de la sesión" en PHP.net php.net/manual/en/session.examples.basic.php - CD001

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.