Вызов сценария выхода php с помощью jQuery

Я хочу, чтобы мой пользователь автоматически выходил из системы, если в течение получаса не было никакой активности. (Код, который вы видите ниже, установлен на 70 секунд не 1/2 часа). Я понимаю, что мне нужно использовать jQuery … это я чрезвычайно новичок в … загрузке моего php-скрипта. (Я работаю над этим слишком долго) Это то, что у меня есть до сих пор.

Это во главе моей страницы.

var log_me_out = true; setTimeout(function(){ $.post({ url: "check_time.php", //data: optional, the data you send with your php-script success:function(){ if(log_me_out == 'yes'){ window.location = 'index_test.php'; } } }) }, 80000); </script> 

Это моя страница check_time.php

 <script type="text/javascript"> var log_me_out = true; </script> <?php include('pagetoretrivepassword.inc.php'); session_start(); if($_SESSION['admin_login'] != $password){ session_unset(); session_destroy(); ?> <script type="text/javascript"> log_me_out = 'yes'; </script> <?php }else{ ?> <script type="text/javascript"> log_me_out = 'no'; </script> <?php } ?> в <script type="text/javascript"> var log_me_out = true; </script> <?php include('pagetoretrivepassword.inc.php'); session_start(); if($_SESSION['admin_login'] != $password){ session_unset(); session_destroy(); ?> <script type="text/javascript"> log_me_out = 'yes'; </script> <?php }else{ ?> <script type="text/javascript"> log_me_out = 'no'; </script> <?php } ?> 

Хорошо, это выглядит хорошо для меня, но я бы предложил немного упрощения. Лучший способ сделать это – использовать код, который у вас есть в функции setTimeout, и в нем проверить, когда пользователь был последним. Поэтому настройте переменную типа «lastActive» и используйте что-то вроде:

 $(document).click(function(){ var currentTime = new Date(); lastActive = currentTime.getSeconds(); }); 

Затем в вашей функции setTimeout вы делаете что-то вроде:

 var currentTime = new Date(); if(lastActive + 5000 < currentTime.getSeconds()){ //If user hasn't been active for 5 seconds... //AJAX call to PHP script }else { setTimeout(theSameFunction(),5000); } 

Затем на вашем PHP просто уничтожьте сеанс, а функция обратного вызова успеха должна просто иметь:

 window.location = 'index_test.php'; 

Чтобы отправить пользователей по пути.

Javascript, который вы написали в вашем php-файле, не будет выполнен. Чтобы узнать, что делает ваш php-скрипт, используйте этот код:

Javascript:

 $.post('check_time.php', function(data) { if(data == 'yes') { window.location = 'index_test.php'; } }); 

Php:

 session_start(); if($_SESSION['admin_login'] != $password) { session_unset(); session_destroy(); echo 'yes'; } else { echo 'no'; } 

Ваш код должен возвращать то, что можно разборчиво, например JSON, XML или HTML. Например, измените check_time.php чтобы вывести это:

 <?php include('pagetoretrivepassword.inc.php'); session_start(); header('Content-type: application/json'); if($_SESSION['admin_login'] != $password){ session_unset(); session_destroy(); json_encode(array("log_me_out"=>"true"); }else{ json_encode(array("log_me_out"=>"false"); } ?> в <?php include('pagetoretrivepassword.inc.php'); session_start(); header('Content-type: application/json'); if($_SESSION['admin_login'] != $password){ session_unset(); session_destroy(); json_encode(array("log_me_out"=>"true"); }else{ json_encode(array("log_me_out"=>"false"); } ?> 

Измените свой HTML-код, чтобы включить эту строку кода JQuery:

 setTimeout(function(){ $.post("check_time.php", function(d){ if(d.log_me_out){ window.location = 'index_test.php'; } }); }, 80000); 

Эта проблема решается здесь, является окончательным рабочим кодом

код на главной странице:

 ini_set('session.gc_maxlifetime',1800); ini_set('session.gc_probability',1); ini_set('session.gc_divisor',1); session_start(); if($_SESSION['admin_login'] != $password){ header('Location: index.php'); exit(); } if(isset($_SESSION['last_activity']) && (time()-$_SESSION['last_activity'] >1800)){ // last request was more than 30 minates ago session_destroy(); // destroy session data in storage session_unset(); // unset $_SESSION variable for the runtime header('Location: index.php'); exit(); } $_SESSION['last_activity'] = time(); // update last activity time stamp ?> <script src="jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> function timedCount(){ $.ajax({ type: 'POST', url: "check_time.php", success: function(data){ if (jQuery.trim(data) == "LOGOUT") { window.location = 'LOGOUT.php'; } } }); setTimeout("timedCount()",10000); }; </script> Here is the code on the check_time.php page <?php session_start(); if (isset($_SESSION['last_activity'])){ if(time() - $_SESSION['last_activity'] > 1800){ session_unset(); session_destroy(); echo "LOGOUT"; } }else{ echo "LOGOUT"; } ?>