Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Added this script in view: `</p> <pre><code>if(isSessionAlive &gt;0) { var timer = { time: 0, now: function(){ return (new Date()).getTime(); }, start: function(){ this.time = this.now(); }, since: function(){ return this.now()-this.time; } } var timerId; sess_expiration = &lt;?=($this-&gt;config-&gt;config["sess_expiration"]*1000)?&gt;; alertTime = &lt;?=($this-&gt;config-&gt;config["sess_time_to_alert"])?&gt;; timerId = window.setTimeout("pingCI()",sess_expiration-((alertTime*1000))); jsBaseurl = "&lt;?=($this-&gt;config-&gt;config["base_url"])?&gt;"; } function resetTimer(resetTime) { //alert('RESET Time'+resetTime); window.clearTimeout(timerId); timerId = window.setTimeout("pingCI()", resetTime); return; } function pingCI() { if(isSessionAlive &gt; 0) { $.ajax({ type: "POST", url: "&lt;?= site_url('users/getSessionTimeLeft') ?&gt;/", data: "sessid=&lt;?=$this-&gt;session-&gt;userdata("session_id")?&gt;", success: function(transport) { response = transport; if(response=='') { parent.location.assign(jsBaseurl+'users/logout'); } else if((response&lt;=(alertTime*1000)) || (response-1000&lt;=(alertTime*1000))) { alertSessionTimeOut(response); } else { resetTime = eval((response - alertTime)*1000); resetTimer(resetTime); } } }); } } function alertSessionTimeOut(alertTimeExp) { if(isSessionAlive&gt;0) { var response=''; var timerIdEnd; timerAlert = window.setTimeout("forceLogout()",alertTimeExp*1000); timer.start(); // start counting my friend... fConfirm = confirm('Your Session is about to time out. Please click OK to continue the session'); if(timer.since() &gt;= (alertTime*1000)) { parent.location.assign(jsBaseurl+'users/logout'); } if(fConfirm ==true) { $.ajax({ type: "POST", url: "&lt;?= site_url('users/keepAlive') ?&gt;/", data: "sessid=&lt;?=$this-&gt;session-&gt;userdata("session_id")?&gt;", success: function(transport) { response = transport; if(response=='') { parent.location.assign(jsBaseurl+'users/logout'); } window.clearTimeout(timerAlert); resetTimer(sess_expiration-((alertTime)*1000)); } }); } else { //parent.location.assign(jsBaseurl+'users/logout'); window.clearTimeout(timerAlert); window.clearTimeout(timerId); } } } function forceLogout() { parent.location.assign(jsBaseurl+'users/logout'); } </code></pre> <p>And in Users Controller:<br></p> <p></p> <pre><code> function getSessionTimeLeft() { $ci = &amp; get_instance(); $SessTimeLeft = 0; $SessExpTime = $ci-&gt;config-&gt;config["sess_expiration"]; $CurrTime = time(); $lastActivity = $this-&gt;session-&gt;userdata['last_activity']; $SessTimeLeft = ($SessExpTime - ($CurrTime - $lastActivity))*1000; print $SessTimeLeft; } function keepAlive() { $this-&gt;load-&gt;library('session'); $this-&gt;session-&gt;set_userdata(array('last_activity'=&gt;time())); if(isset($this-&gt;session-&gt;userdata["user_id"])) print 'ALIVE'; else print ''; } </code></pre> <p>`</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload