Pregunta

Si llego a una página que llama a session_start () . ¿Cuánto tiempo tendría que esperar, de modo que si tuviera que actualizar la página, se me emitiera un nuevo ID de sesión?

¿Fue útil?

Solución

Verifique php.ini, el valor establecido para session.gc_maxlifetime es el tiempo de vida de la ID en segundos.

Creo que el valor predeterminado es 1440 segundos (24 minutos)

http://www.php.net/manual/en/session. configuration.php

Editar: Como señalan algunos comentarios, lo anterior no es del todo exacto. Una maravillosa explicación de por qué y cómo implementar la duración de las sesiones está disponible aquí:

¿Cómo caduco una sesión de PHP después de las 30? minutos?

Otros consejos

El valor predeterminado en php.ini para la directiva session.gc_maxlifetime (el " gc " es para la recolección de basura) es de 1440 segundos o 24 minutos. Consulte la página de configuración del tiempo de ejecución de sesión en el manual:

http://www.php.net/manual/en/session. configuration.php

Puede cambiar esta constante en los archivos php.ini o .httpd.conf si tiene acceso a ellos, o en el archivo .htaccess local de su sitio web. Para establecer el tiempo de espera en una hora con el método .htaccess, agregue esta línea al archivo .htaccess en el directorio raíz del sitio:

php_value session.gc_maxlifetime "3600"

Tenga cuidado si está en un host compartido o si aloja más de un sitio donde no ha cambiado el valor predeterminado. La ubicación predeterminada de la sesión es el directorio / tmp, y la rutina de recolección de basura se ejecutará cada 24 minutos para estos otros sitios (y eliminará sus sesiones en el proceso, independientemente del tiempo que se deben mantener ) . Consulte la nota en la página del manual o este sitio para obtener una mejor explicación.

La respuesta a esto es mover tus sesiones a otro directorio usando session.save_path. Esto también ayuda a evitar que los malos secuestren las sesiones de sus visitantes desde el directorio / tmp predeterminado.

Según un usuario en PHP.net sitio, sus esfuerzos por mantener la sesión con vida fracasaron, por lo que tuvo que hacer una solución.

<?php

$Lifetime = 3600;
$separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";

$DirectoryPath = dirname(__FILE__) . "{$separator}SessionData";
//in Wamp for Windows the result for $DirectoryPath
//would be C:\wamp\www\your_site\SessionData

is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777);

if (ini_get("session.use_trans_sid") == true) {
    ini_set("url_rewriter.tags", "");
    ini_set("session.use_trans_sid", false);

}

ini_set("session.gc_maxlifetime", $Lifetime);
ini_set("session.gc_divisor", "1");
ini_set("session.gc_probability", "1");
ini_set("session.cookie_lifetime", "0");
ini_set("session.save_path", $DirectoryPath);
session_start();

?>

En la carpeta SessionData, se almacenarán los archivos de texto para almacenar información de la sesión, cada archivo tendrá un nombre similar a " sess_a_big_hash_here " ;.

depende de tu configuración de php ...
use phpinfo () y eche un vistazo al capítulo de la sesión. Hay valores como session.gc_maxlifetime y session.cache_expire y session.cookie_lifetime que afectan la duración de las sesiones

EDITAR: es como Martin escribe antes

Pero tenga cuidado, en la mayoría de las configuraciones xampp / ampp /...- y algunos problemas de Linux es 0, lo que significa que el archivo nunca se eliminará hasta que lo haga dentro de su script (o sucio a través de shell)

PHP.INI:

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0

Puedes usar algo como ini_set ('session.gc_maxlifetime', 28800); // 8 * 60 * 60 también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top