Establecer el tiempo de espera de la sesión en PHP

Subodh Poudel 30 enero 2023
  1. Utilice las funciones session_unset() y session_destroy() para establecer el tiempo de espera de la sesión en PHP
  2. Utilice la función unset() para establecer el tiempo de espera de la sesión en PHP
  3. Utilice la función session_regenerate_id() para cambiar el ID de sesión actual en PHP
Establecer el tiempo de espera de la sesión en PHP

Este artículo presentará un método para destruir la sesión en PHP usando las funciones session_unset() y session_destroy(). Destruiremos la sesión después de 30 minutos. Comprueba el intervalo de tiempo desde la última actividad hasta la hora actual para destruir la sesión.

También demostraremos otra forma de establecer el tiempo de espera de la sesión en PHP usando la función unset(). La función unset() toma la variable de sesión como parámetro. Este método usa un array para almacenar la variable de sesión.

Introduciremos otro método para invalidar la identificación de la sesión actual usando la función session_regenerate_id(). Esta función genera una nueva identificación de sesión para la sesión actual destruyendo la identificación de sesión anterior.

Utilice las funciones session_unset() y session_destroy() para establecer el tiempo de espera de la sesión en PHP

Podemos usar la función session_unset() para desarmar la variable $_SESSION en el tiempo de ejecución y usar la función session_destroy() para destruir la sesión del almacenamiento. La función time() devuelve la hora actual. Podemos usar la variable $_SESSION para almacenar la marca de tiempo de la última actividad. Así, podemos comprobar la hora calculando las diferencias entre la última actividad y la hora actual. De esta forma, comprobamos el intervalo de tiempo de una sesión.

Por ejemplo, inicie la sesión en el servidor con la función session_start(). Compruebe si la sesión se ha creado con la función isset(). Utilice el operador && para comprobar la otra condición dentro de la función issset(). Reste la variable de sesión start de la función time() y compruebe el resultado si es mayor que 1800. Utilice session_unset() y session_destroy() dentro de la condición if. Luego muestre el mensaje que dice que la sesión ha sido destruida. Fuera de la condición if, cree una variable de sesión $_SESSION['start'] y asígnele la función time() para actualizar la sesión.

La condición if falla porque la variable de sesión aún no se ha creado en el ejemplo siguiente. La sesión se creará cuando la condición falle. La sesión expira después de 30 minutos si el usuario no envía la solicitud al servidor. La última parte de la función isset() comprueba el tiempo activo total de la sesión. 1800 indica 1800 segundos, lo que equivale a 30 minutos. Si el tiempo activo total excede los 30 minutos, la condición if será verdadera. Luego, destruye la sesión. La salida del código corresponde a la destrucción de la sesión después de más de 30 minutos del tiempo activo. Consulte el Manual de PHP para obtener más información sobre la función session_unset().

Código de ejemplo:

# php 7.*
<?php
session_start();
if (isset($_SESSION['start']) && (time() - $_SESSION['start'] > 1800)) {
    session_unset(); 
    session_destroy(); 
    echo "session destroyed"; 
}
$_SESSION['start'] = time();
?>

Producción :

session destroyed

Utilice la función unset() para establecer el tiempo de espera de la sesión en PHP

Podemos usar la función unset() para destruir la sesión de una variable de sesión en particular en PHP. La función toma la variable $_SESSION como parámetro. Este método almacena la sesión en un array. Podemos usar el array asociativa para almacenar el nombre de la sesión y la hora de inicio de la sesión. Podemos usar la función time() para obtener la hora actual. Podemos comprobar el intervalo de tiempo de la sesión siguiendo el método mencionado anteriormente, restando el tiempo de la sesión activa del tiempo actual.

Por ejemplo, use la función session_start() para iniciar la sesión. Escriba una variable de sesión $ _SESSION ['inicio'] y asígnele un array asociativa. Escriba las claves 0 y registered y escriba los valores active y time() para las teclas respectivas. Compruebe si el intervalo de tiempo es superior a 30 minutos. Si la condición es verdadera, escriba la función unset() con $_SESSION['start'] como parámetro. A continuación, muestra el mensaje session destroyed. Fuera del bloque de condiciones if, actualice la variable de sesión $_SESSION['start'] con la función time().

En el siguiente ejemplo, el array contiene la variable de sesión. El valor de la variable de sesión es active. La función time() crea la marca de tiempo actual en el array, y la clave registered contiene el valor. Por favor, consulte el Manual de PHP para obtener más información sobre la variable superglobal $_SESSION.

Código de ejemplo:

#php 7.x
<?php
session_start();
$_SESSION['start'] = array(0=> 'active', 'registered' => time())
if ((time() - $_SESSION['start']['registered']) > (60 * 30)) {
    unset($_SESSION['start']);
    echo "session destroyed";
}
$_SESSION['start'] = time();
?>

Producción :

session destroyed

Utilice la función session_regenerate_id() para cambiar el ID de sesión actual en PHP

Podemos usar la función session_regenerate_id() para cambiar la identificación de la sesión actual. De esta manera, podemos evitar que nuestro script se fije en la sesión. El valor booleano true en la función permite la generación de un nuevo id de sesión. En este método, podemos imprimir la identificación de la sesión usando la función session_id() antes y después de la regeneración de la identificación de la sesión. Pero la sesión no caduca con el cambio de la identificación de sesión. Solo le pide al usuario que inicie sesión nuevamente. Por tanto, evita la fijación de la sesión.

Por ejemplo, inicie la sesión con la función session_id(). Muestra la identificación de la sesión actual usando la función session_id(). Compruebe si la sesión ha sido creada y cree una sesión $_SESSION['start'] y asigne la función time(). Encuentre el intervalo de tiempo de la sesión activa como hicimos en el método anterior. Si la condición es verdadera, use la función session_regenerate_id(true). Actualice la variable de sesión. Al final del script, imprima la nueva identificación de sesión con la función session_id().

Código de ejemplo:

#php 7.x
<?php
session_start();
print("Old: ".session_id());
echo "<br>";
if (!isset($_SESSION['start'])) {
    $_SESSION['start'] = time();
} else if (time() - $_SESSION['start'] > 1800) {
    session_regenerate_id(true); 
    $_SESSION['start'] = time(); 
}
print("Now: ".session_id());
?>

Producción :

​Old: t38kssej37un38mtsoa6lovh05 
Now: mak7i3in708c6rl2udd8gbfo3r ​ ​
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Artículo relacionado - PHP Session