ini_set htaccess gc_maxlifetime expirar cookie_httponly php session lifetime

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.



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.