skip to Main Content

In my Dashboard.php I call an Ajax Request every 800ms that fetches data from a php file and changes the inner html of an element on my Dashboard.php.

I use it to display a 60 seconds coundown since last activity. Once it reaches 0 it should send the user to logout.php and from there to index.php.

The problem now is that I stay on my page and index.php gets inserted into my div. How can I force it to a site refresh?

Dashboard.php

<script type="text/javascript">
  setInterval(function(){
    getSessionEnd();
  }, 800);
</script>

app.js

var st = document.getElementById("sessiontime");
if (typeof(st) != 'undefined' && st != null){
  sessionEnds();
}

function getSessionEnd() {
  var xhttp;
  xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
    document.getElementById("sessiontime").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", "./assets/ajax/sessionEnds.php");
  xhttp.send();
}

SessionEnds.php

<?php
session_start();
require_once '../../includes/datacon.php';

global $pdo;
$sql = $pdo->prepare('SELECT * FROM userdata JOIN user ON user.id = userdata.uid WHERE username=?');
$sql->bindParam(1, $_SESSION['user']);
$sql->execute();
$sqlu = $sql->fetch( );

$timeS = strtotime($sqlu['lastseen']);
$timeE = strtotime(date("Y-m-d H:i:s", strtotime("+". 1 . " minutes", $timeS)));
$timeD = $timeE - time();
function secondsToTime($seconds) {
    $dtF = new DateTime('@0');
    $dtT = new DateTime("@$seconds");
    return $dtF->diff($dtT)->format('%i minutes and %s seconds');
}
$timeD = secondsToTime($timeD);

if($timeE < time()){
  Header('Location: ../../includes/logout.php');
  exit();
} else {
    echo $timeD;
}
 ?>

2

Answers


  1. change to

    if($timeE < time()){
      echo "0"; // send 0 response
    } else {
        echo $timeD;// send time
    }
    

    also

    if (this.readyState == 4 && this.status == 200) {
    if (this.responseText=="0" || this.responseText==" 0"){
    
        window.location("logout.php");// got to logout page
    }
    else
        document.getElementById("sessiontime").innerHTML = this.responseText;
        }
    

    Change the code as this
    give the correct path to logout page..
    You need to go to the logout page from the current page in browser.

    Login or Signup to reply.
  2. PHP is server side and you’d like to force the client to reload, so, it looks like you need to add something in jscript to force the client to refresh the page, like changing the window.location, or location.reload

          window.location=<your target>
          //or
          location.reload()
    

    To add in logout.php I presume.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search