Below are two MIT Licensed functions to Handle PHP Session Inactivity and Session Timeouts in PHP.
Destroys the session of a user after an amount of time.
<?php
/*
* -------------------------------------------------------
* sessionTimeout
* -------------------------------------------------------
* @Version: 1.0.0
* @Author: FireDart
* @Link: http://firedartstudios.com/
* @GitHub: https://github.com/FireDart/snippets/PHP/Session
* @License: The MIT License (MIT)
*
* Kills the session of a user after an amount of time.
*
* -------------------------------------------------------
* Requirements
* -------------------------------------------------------
* PHP 5.4.0+
*
* -------------------------------------------------------
* Usage
* -------------------------------------------------------
* session_start();
* sessionTimeout(10, "logout.php");
* ^ ^
* 10 Minutes - | | - Redirect location
*/
/*
* sessionTimeout
*
* Kills a session after a specific amount of time and
* redirects user.
*
* @param int $minutes How many minutes till the session
* timesout
* @param str $redirect Where should the function redirect
* after timeout
* @return mixed Will return errors if any, otherwise nothing
*/
function sessionTimeout($minutes, $redirect = null) {
try {
// Check if a session has even been started
if(session_id() == '') {
throw new Exception('No session has been started, please add session_start().');
}
// Check if timeout is set & is an integer
if(!isset($minutes) || !is_int($minutes)) {
throw new Exception('No timeout amount set or expects integer.');
}
// If no redirect is set use the current page
if(!isset($redirect)) {
$redirect = $_SERVER['REQUEST_URI'];
}
// If timeout session is not set, create it
if(!isset($_SESSION['timeout'])) {
$_SESSION['timeout'] = time();
}
// Calculate how many seconds
$inactive = 60 * $minutes;
// Calculate current inactive session
$currentSession = time() - $_SESSION['timeout'];
// If current session is longer then timeout destroy session & redirect
if($currentSession > $inactive) {
session_destroy();
header("Location: " . $redirect);
}
} catch(Exception $e) {
echo $e->getMessage();
}
}
Destroys the session of a user after a certain amount of time being inactive.
<?php
/*
* -------------------------------------------------------
* sessionInactivity
* -------------------------------------------------------
* @Version: 1.0.0
* @Author: FireDart
* @Link: http://firedartstudios.com/
* @GitHub: https://github.com/FireDart/snippets/PHP/Session
* @License: The MIT License (MIT)
*
* Kills the session of a user after a continues amount of
* time being inactive.
*
* -------------------------------------------------------
* Requirements
* -------------------------------------------------------
* PHP 5.4.0+
*
* -------------------------------------------------------
* Usage
* -------------------------------------------------------
* session_start();
* sessionTimeout(10, "logout.php");
* ^ ^
* 10 Minutes - | | - Redirect location
*/
/*
* sessionInactivity
*
* Kills the session of a user after a continues amount of
* time being inactive.
*
* @param int $minutes How many minutes till the session
* timesout
* @param str $redirect Where should the function redirect
* after timeout
* @return mixed Will return errors if any, otherwise nothing
*/
function sessionInactivity($minutes, $redirect = null) {
try {
// Check if a session has even been started
if(session_id() == '') {
throw new Exception('No session has been started, please add session_start().');
}
// Check if timeout is set & is an integer
if(!isset($minutes) || !is_int($minutes)) {
throw new Exception('No timeout amount set or expects integer.');
}
// If no redirect is set use the current page
if(!isset($redirect)) {
$redirect = $_SERVER['REQUEST_URI'];
}
// If timeout session is not set, create it
$_SESSION['timeout'] = time();
// Calculate how many seconds
$inactive = 60 * $minutes;
// Calculate current inactive session
$currentSession = time() - $_SESSION['timeout'];
// If current session is longer then timeout destroy session & redirect
if($currentSession > $inactive) {
session_destroy();
header("Location: " . $redirect);
}
} catch(Exception $e) {
echo $e->getMessage();
}
}







