¿Cómo destruir la sesión después de un tiempo en PHP?

En PHP, creamos sesiones para el usuario que ha iniciado sesión y hacemos que ese usuario esté en línea hasta que el usuario cierre la sesión. Se puede hacer haciendo clic en el botón de cierre de sesión o destruyendo esa sesión después de un tiempo fijo. 

De forma predeterminada, el tiempo de caducidad de cualquier sesión en particular que se cree es de 1440 segundos, es decir, (24*60), es decir, 24 minutos. Pero en algunos casos, necesitamos cambiar el tiempo predeterminado en consecuencia.

Podemos hacerlo de 2 maneras.

1. Podemos cambiarlo en el archivo php.ini y cambiar la configuración, pero eso cambiará el tiempo predeterminado para todos los sitios que trabajan en ese servidor y eso será un obstáculo para todos los demás sitios. Entonces, la segunda opción es preferible .

2. Lógicamente podemos cambiar el tiempo de destrucción de la sesión. Tomamos la hora de la creación de la sesión calculando la hora actual del sistema y, a medida que el usuario navega por las diferentes páginas del script, comprobará la hora de caducidad, es decir, se declara explícitamente como caducidad de la sesión.

Estructura del archivo:

index.php: si ingresa las credenciales incorrectas, arrojará un error. Si ingresa las credenciales correctas, será redirigido a » HomePage.php» y destruirá la sesión después de 1 minuto. El desarrollador puede cambiar el tiempo en consecuencia.

PHP

<?php
   
    session_start();
   
    if(@$_POST['submit']) {
        $username = $_POST['email'];
        $password = $_POST['pwd'];
   
        if($username =="GFG@gmail.com" && $password=="gfg123") {
            $_SESSION['user'] = $username;
  
            // Taking current system Time
            $_SESSION['start'] = time(); 
  
            // Destroying session after 1 minute
            $_SESSION['expire'] = $_SESSION['start'] + (1 * 10) ; 
               
            header('Location: HomePage.php');
        }
        else {
            $err= "<font color='red'>Invalid user login </font>";
        }
    }
?>
  
<html>
  
<head>
    <style>
        h2 {
            text-align: center;
        }
    </style>
</head>
  
<body>
    <h2 style="color:green">GeeksforGeeks</h2>
    <form method="post">
  
        <table align="center">
            <tr>
                <td>
                    <?php echo @$err;?>
                </td>
            </tr>
            <tr>
                <td>Username </td>
                <td><input type="email" name="email" 
                    placeholder="GFG@gmail.com" required>
                </td>
            </tr>
            <tr>
                <td>Password</td>
                <td><input type="password" name="pwd" 
                    placeholder="gfg123" required>
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <input type="submit" 
                        value="Sign In" name="submit">
                </td>
            </tr>
        </table>
    </form>
</body>
  
</html>

HomePage.php

<?php
   
    session_start();
   
    if(!isset($_SESSION['user'])) {
        echo "<p align='center'>Want to login again";
        echo "<a href='index.php'>Click Here to Login</a></p>";
    }
    else {
        $now = time();
      
        if($now > $_SESSION['expire']) {
            session_destroy();
            echo "<p align='center'>Session has been destoryed!!";
            header("Location: index.php");  
        }
        else { 
?>
<html>
  
<head>
    <meta http-equiv="refresh" content="10">
</head>
  
<body>
    <p>
        Welcome
        <?php echo $_SESSION['user']; ?>
  
        <span style="float:right">
            <a href='logout.php'>LogOut</a></span>
  
        <p style="padding-top: 20px; 
            background:#CCCCCC;
            height: 400px; text-align: center">
            <span style="color:red; text-align:center">
                Your Session Will destroy after 1 minute
            </span>
            <br /><br />
        </p>
    </p>
    <?php
    }
}
  
?>
</body>
  
</html>

logout.php

<?php
  
session_start();
  
session_destroy();
  
header('location:index.php');
  
?>

Producción:

Sesión destruir

Publicación traducida automáticamente

Artículo escrito por atul07 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *