我有一个如下所示的ajax代码,在该代码中,我要在特定的非活动时间段后注销页面。下面的代码在文件mno.php(JavaScript和php)中。我的登录/注销代码在文件mno.php中。
我相信我需要在A行进行更改。我尝试使用{action:'logout'}
而不是{'logout'}
,但仍然无法正常工作。我的登录和注销代码位于mno.php。
<?php
if(isset($_GET['action']) && $_GET['action'] == "logout") {
unset($_SESSION['pageadmin']);
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秒钟不活动或我们设置的任何时间后退出页面。
Edit 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
我尝试了确切的代码,并在给定的时间后开始工作。 ajax url是文件url本身(包括php和ajax调用)。
test.php:
<?php
if(isset($_GET['action']) && $_GET['action'] == "logout") {
echo 'logged out';
}
?>
<script src="js/jquery-min.js"></script>
<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: "test.php",
type: 'GET',
data: {action:'logout'}, // Line A
success: function(data){
console.log(data); // Line B
},
error: function(xhr, status, error) {
console.log(xhr.responseText);
console.log(error);
console.log(status);
console.log(xhr);
}
});
}
}, 1000);
});
</script>
我从php中获取了“登出”以及文件中其余内容的信息。因此您应该能够执行注销功能。也许检查您的网址是否正确。
由于处理响应后必须使用ajax,因此必须将代码返回ajax,现在您的代码正在发送回mno.php
的html数据,因为您无法从php代码进行重定向。相反,请执行以下操作:
您的Ajax代码:
$.ajax({
url: "test.php",
type: 'GET',
data: {
action: 'logout'
}, // Line A
success: function(data) {
if (data === "success") {
window.location.href = "login_page_to_redirect";
}else{
alert("error");
}
},
error: function(xhr, status, error) {
console.log(xhr.responseText);
console.log(error);
console.log(status);
console.log(xhr);
}
});
您的PHP代码:
if(isset($_GET['action']) && $_GET['action'] == "logout") {
unset($_SESSION['pageadmin']);
//this will send back to ajax
echo "success";
}else{
echo "error";
}