如果在后台使用 jquery 进行会话检查失败,如何重定向 index.php 页面?
Posted
技术标签:
【中文标题】如果在后台使用 jquery 进行会话检查失败,如何重定向 index.php 页面?【英文标题】:How to redirect index.php page if session checking with jquery fails in the background? 【发布时间】:2016-11-11 08:06:53 【问题描述】:我有一个 index.php 需要会话。我也有 sessioncheckpage.php
看起来像下面的代码。效果很好。
$login_hash=$_SESSION['hash'];
if ($login_hash != $tulos)
session_destroy();
header("Location: login.php");
但是如何重新加载 index.php?我的 javascript 代码只是想在后台刷新 sessioncheckpage.php。
<script>
var interval = 0;
function start()
setTimeout( function()
ajax_function();
interval = 10;
setInterval( function()
ajax_function();
, interval * 1000);
, interval * 1000);
function ajax_function()
$.ajax(
url: "sessionchecker.php",
context: document.body,
success: function(result)
$('.time').html(result);
);
$( window ).load(function()
var time = new Date();
interval = 10 - time.getSeconds();
if(interval==10)
interval = 0;
start();
);
</script>
上面是包含在 index.php 中的 jQuery。也可以将 index.php 作为 sessioncheckpage.php 重新加载,但有视频内容,因此在页面刷新(会话检查)后视频不应停止......
【问题讨论】:
【参考方案1】:可以查看状态码
PHP 代码
<?PHP
if(notLoggedIN())
header("HTTP/1.1 401 Unauthorized");
exit;
?>
jQuery
$.ajax(
url: "sessionchecker.php",
context: document.body,
success: function(result)
$('.time').html(result);
error: function(jqXHR, status, code)
if (jqXHR.status === 401)
window.location.replace("/login.php");
);
【讨论】:
【参考方案2】:如果您的 sessionchecker 脚本是 RESTful(即实现 HTTP 错误代码),则添加到您的 $.ajax
调用错误函数。否则,在你的成功函数中添加一个子句来调用window.location.reload()
$.ajax(
url: "sessionchecker.php",
context: document.body,
success: function(result)
$('.time').html(result);
error: function(jqXHR, status, error)
window.location.reload();
);
【讨论】:
以上是关于如果在后台使用 jquery 进行会话检查失败,如何重定向 index.php 页面?的主要内容,如果未能解决你的问题,请参考以下文章
许多带有后台会话的任务(NSURLSessionDownloadTask)导致使用 AFNetworking 失败
Firebase Analytics 如何处理后台活动的会话持续时间(mp3 播放器)