php - htaccess - Cómo configurar la duración de la sesión
session.gc_maxlifetime=0 (5)
Antes de PHP 7, la función session_start () no aceptaba directamente ninguna opción de configuración. Ahora puedes hacerlo de esta manera.
<?php
// This sends a persistent cookie that lasts a day.
session_start([
''cookie_lifetime'' => 86400,
]);
?>
Referencia: http://nl1.php.net/manual/en/function.session-start.php#example-5976
¿Cómo configurar la duración de la sesión en PHP? Quiero configurarlo para siempre siempre que exista la solicitud. La solicitud es AJAX. Mi código PHP que maneja la solicitud de AJAX es:
// AJAX.php
<?php
session_start();
$_SESSION[''counter''] = $_SESSION[''counter''] + 1;
header(''Content-type: application/json'');
echo json_encode(array(''tick'' => $_SESSION[''counter'']));
?>
y el JavaScript:
$(document).ready(function() {
function check() {
getJSON(''ajax.php'');
}
function getJSON(url) {
return $.getJSON(
url,
function(data) {
$("#ticker").html(data.tick);
}
);
}
setInterval(function() {
check();
}, 10000); // Tick every 10 seconds
});
La sesión siempre se reinicia después de 300 segundos.
Establecer los siguientes parámetros de php al mismo valor en segundos:
session.cookie_lifetime
session.gc_maxlifetime
en php.ini, .htaccess o por ejemplo con
ini_set(''session.cookie_lifetime'', 86400);
ini_set(''session.gc_maxlifetime'', 86400);
por un día.
Campo de golf:
Las sesiones en PHP funcionan con una sesión de tipo Cookie, mientras que en el lado del servidor la información de la sesión se elimina constantemente.
Para establecer el tiempo de vida en php, puede utilizar la función session_set_cookie_params , antes de session_start:
session_set_cookie_params(3600,"/");
session_start();
Por ejemplo, 3600 segundos es una hora, durante 2 horas 3600 * 2 = 7200.
Pero es una cookie de sesión, el navegador puede caducar por sí mismo, si desea guardar largas sesiones de tiempo (como recordar el inicio de sesión), debe guardar los datos en el servidor y una cookie estándar en el lado del cliente.
Puedes tener una tabla de "Sesiones":
- session_id int
- session_hash varchar (20)
- texto de sesión_datos
Y validando una cookie, guarda el "id de sesión" y el "hash" (por seguridad) en el lado del cliente, y puede guardar los datos de la sesión en el lado del servidor, por ejemplo:
Al iniciar sesión:
setcookie(''sessid'', $sessionid, 604800); // One week or seven days
setcookie(''sesshash'', $sessionhash, 604800); // One week or seven days
// And save the session data:
saveSessionData($sessionid, $sessionhash, serialize($_SESSION)); // saveSessionData is your function
Si el usuario vuelve:
if (isset($_COOKIE[''sessid''])) {
if (valide_session($_COOKIE[''sessid''], $_COOKIE[''sesshash''])) {
$_SESSION = unserialize(get_session_data($_COOKIE[''sessid'']));
} else {
// Dont validate the hash, possible session falsification
}
}
Obviamente, guarde todas las llamadas de sesión / cookies, antes de enviar datos.
Las sesiones se pueden configurar en su archivo php.ini o en su archivo .htaccess. Echa un vistazo a la http://www.php.net/manual/en/session.configuration.php .
Lo que básicamente quiere hacer es buscar la línea session.cookie_lifetime
en php.ini y hacer que su valor sea 0 para que la cookie de sesión sea válida hasta que se cierre el navegador. Si no puede editar ese archivo, puede agregar php_value session.cookie_lifetime 0
a su archivo .htaccess.
Mientras el usuario no elimine sus cookies ni cierre su navegador, la sesión debe seguir existiendo.