我正在尝试进行一种会话跟踪。
在checkLogin.php中,登录过程成功后,它会将一个小的php数组写入一个带有用户名的txt文件中,并将用户名保存为会话变量。稍后用于跟踪用户是否处于非活动状态。通过Python脚本,如果用户处于非活动状态,则将从阵列中删除用户名。
在任何其他网页中,Web应用程序将包含txt文件,并检查会话变量中的用户名是否仍在数组中,如果不是,则会破坏会话并提示用户登录agn (用户已无效)。
但是,在第一次登录时,当应用程序检查数组中的会话用户名时,它始终返回未找到的前1-2秒并更改为之后找到的。我认为这是因为该文件仍在编写,因为applciation继续下一页。有没有办法让应用程序在转到下一页之前等待fwrite完成?
登录后,文本文件(user.txt)将如下所示
<?php activeUser= array("User1"); ?>
“User1”存储为$ _SESSION ['current_user']
在每个其他页面中,在代码顶部我都有
include 'user.txt';
if(in_array($_SESSION['current_user'], $activeUser)) {
echo "Found";
//User still active;
}
else {
echo "Not Found";
//session_destroy();
//header("Location:index.php?status=userInactive");
}
登录并使用第二段代码到达主页后,显示“未找到”,但刷新后会更改为“找到”。
答案 0 :(得分:0)
我从你的评论中推断出你希望你的代码是异步的,所以尝试使用try catch块。
try {
// try your time taking process here
} catch(Exception $e) {
// throw your failed case here
}finally{
// do the successfull case here
}