Lion Smith
Lion Smith

Reputation: 655

session destroy after count down timer reach 0

use countdown timer for logout user,if user is inactive for 2hrs..

function Timer(duration, display)  {
    var timer = duration, hours, minutes, seconds;
    setInterval(function () {
        hours = parseInt((timer /3600)%24, 10)
        minutes = parseInt((timer / 60)%60, 10)
        seconds = parseInt(timer % 60, 10);

        hours = hours < 10 ? "0" + hours : hours;
        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.text(hours +":"+minutes + ":" + seconds);
        if(hours == 0 && minutes == 0 && seconds == 0){
            $.ajax({
              url:'../ajax/logoutuser.php',

              success: function(data){
                  console.log('logout');
              }
            });
        }else{
           --timer;
        }

    }, 1000);
}

window.onload = function () {
  var twentyFourHours = 1 * 1 * 3;
  var display = $('#time');


 Timer(twentyFourHours, display);


};

and since i cant call session destroy on jquery function i use ajax to make request..

<?php

require_once '../config/database.php';
require_once '../includes/dboperations/user.php';

$database = new Database();
$conn = $database->getConnection();
$db =  new User($conn);

$user = json_decode($_SESSION["user"]);
        $db->offlineStatus($user->user_id);


        session_destroy();

        echo "<script>window.location.href = '../index.php'</script>";

?>

but what happens is, it doesnt call the session destroy function after making request. it runs the console.log inside success function..

is there a way to log out user if inactive for 2hrs

Upvotes: 0

Views: 907

Answers (2)

Suresh Velusamy
Suresh Velusamy

Reputation: 2398

You can achieve by php way. Something like

$expiry = 1800 ;//session expiry required after 30 mins
if (isset($_SESSION['LAST']) && (time() - $_SESSION['LAST'] > $expiry)) {
    session_unset();
    session_destroy();
}
$_SESSION['LAST'] = time();

Upvotes: 2

B. Desai
B. Desai

Reputation: 16446

Instead of echo script from php file out it in success function of ajax code

success: function(data){
         console.log('logout');
         window.location.href = '../index.php';
}

Upvotes: 1

Related Questions