【发布时间】:2020-08-15 11:17:51
【问题描述】:
我有一个如下所示的 ajax 代码,我想在特定时间段不活动后注销页面。下面的代码在文件 mno.php 中(包括 javascript 和 php)。我的登录/注销代码在 mno.php 文件中。
我认为我需要在 A 行 进行更改。我尝试使用{'logout'} 而不是{action:'logout'},但它仍然无法正常工作。我的登录和注销代码在 mno.php 中。
<?php
if(isset($_GET['action']) && $_GET['action'] == "logout") {
unset($_SESSION['admin']);
header('location: /abc/mno.php.php');
exit();
}
?>
<script>
jQuery(document).ready(function ($) {
let lastActivity = <?php echo time(); ?>;
let now = <?php echo time(); ?>;
let logoutAfter = 10;
let timer = setInterval(function () {
now++;
let delta = now - lastActivity;
console.log(delta);
if (delta > logoutAfter) {
clearInterval(timer);
//DO AJAX REQUEST TO close.php
$.ajax({
url: "/abc/mno.php",
type: 'GET',
data: {action:'logout'}, // Line A
success: function(data){
console.log(data); // Line B
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
});
}
}, 1000);
});
</script>
问题陈述:
我想知道我需要在 A 行或 php 中进行哪些更改,以便页面在 10 秒不活动或我们设置的任何时间后注销。
编辑 1:我将 console.log(data) 放在 B 行。在控制台上,我得到了登录页面的 HTML,但该页面仍未注销。我的登录页面代码在 mno.php 中。在执行 console.log(data) 时,我在控制台上得到以下信息:
<form action="/abc/mno.php" method="post">
<div style='width:400px;'>
<input type="hidden" id="user_login" name="user_login" value="1">
<fieldset>
<legend>Login</legend>
<div>
<label for="user_name">User Name</label>
<input type="text" name="user_name">
</div>
<div>
<label for="user_pass">Password</label>
<input type="password" name="user_pass">
</div>
<div>
<button type="submit">Login</button>
</div>
</fieldset>
</div>
</form>
编辑 2:我已将 /mno.php 替换为 /abc/mno.php
【问题讨论】:
-
您的 PHP 应该在 AJAX 的单独页面上。
-
你的意思是,我应该把我的 AJAX 代码放在一个单独的地方?
-
@StackSlave A 行有错误吗?
-
我总是使用外部
<script src='folder/file.js'></script>将我的 JavaScript 放在我的<head>中,然后使用外部文件上的脚本发送到 PHP 页面,该页面使用echo json_encode($objectHere);发回数据 -
@StackSlave 我已经编辑了我的问题。我想知道你是否可以看看。
标签: javascript php ajax session logout