¿como mostrar en minutos el tiempo restante de una sesión usando $_SESSION + time (x*y) en PHP?

publicado por: Anonymous

En la función de conectarse de mi sistema tengo la creación de dos variables de sesión para guardar el tiempo en que conecto al sistema y un tiempo de expiran, de la siguiente manera:

$_SESSION['inicio'] = time();
$_SESSION['expira'] = $_SESSION['inicio'] + (15*60);

Quisiera poder mostrar esos datos convertidos a minutos usando echo.

echo $_SESSION['inicio'];
echo "<br>";
echo $_SESSION['expira'];

Como puedo convertirlo?

solución

Para mostrar el tiempo de sesión y el restante en minutos (y también segundos si quieres) podrías usar:

<?php
session_start();
$hora = time();
if (!isset($_SESSION['inicio']) && !isset($_SESSION['expira'])) {
  $_SESSION['inicio'] = $hora;
  $_SESSION['expira'] = $hora + (15*60);
}
$hace = $hora - $_SESSION['inicio'];
echo "<p>Inició sesión hace ". floor($hace / 60) .
  " minutos y " . ($hace % 60) . " segundos</p>";
if ($hora > $_SESSION['expira']) {
  $hace = $hora - $_SESSION['expira'];
  echo "<p>Su sesión finalizó hace ". floor($hace / 60) .
    " minutos y " . ($hace % 60) . " segundos</p>";
} else {
  $hace = $_SESSION['expira'] - $hora;
  echo "<p>Su sesión finaliza en ". floor($hace / 60) .
    " minutos y " . ($hace % 60) . " segundos</p>";
}

Iniciar el sistema de sesiones con session_start() es indispensable.

Luego compruebo si están definidas las variables de sesión o no. Si no lo están es porque es la primera vez que accedemos a la página, por lo que inicializamos la hora de inicio y expiración.

Por último calculo la diferencia entre la hora actual y la de inicio para mostrar el tiempo transcurrido (el número de segundos entre 60 son los minutos, y el resto de la división son los segundos), y si hemos sobrepasado el tiempo de fin de sesión indicamos cuánto tiempo hace que superamos el límite y si no hemos llegado calculamos el restante.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *