检测用户是否通过JS使用php注销(没有会话),如果是,则停止执行JS函数的其余部分
Detecting if a user has logged out (got no session) using php via JS, and if so - stopping the execution of the remainder of the JS function
我正在尝试找到一种方法来检测用户在运行特定的JS/jQuery函数时是否没有会话(这可以通过两种方式发生——会话是否过期,或者用户是否在另一个浏览器窗口/选项卡中注销)。如果用户没有会话,则函数应在此时停止执行(返回false)。
我试过这样使用AJAX:
function CheckForSession() {
var str="chksession=true";
jQuery.ajax({
type: "POST",
url: "chk_session.php",
data: str,
cache: false,
success: function(res){
if(res == "0") {
alert('Your session has been expired!');
}
}
});
}
chk_session.php是
require('includes/application_top.php');
$session_test = $_SESSION['customer_id'];
if($session_test == '') {
//session expired
echo "0";
} else {
//session not expired
echo "1";
}
然后我在里面调用这个函数:
jQuery('body').on('click','.cart_icon_div1.active.selected', function(){
CheckForSession();
//if the session doesn't exist, stop running this function, else continue to do more cool stuff
});
问题是我无法让它发挥作用。坦率地说,我的js/jQuery技能非常有限。
非常感谢您的帮助。
这里有一个回调版本:
function CheckForSession(onLoggedIn, onLoginExpired) {
var str="chksession=true";
jQuery.ajax({
type: "POST",
url: "chk_session.php",
data: str,
cache: false,
success: function(res){
if(res == "0") {
onLoginExpired();
} else {
onLoggedIn();
}
}
});
}
jQuery('body').on('click','.cart_icon_div1.active.selected', function(){
CheckForSession(function() {
// Do any important session-required stuff here
},
function() {
alert('Your session has been expired!');
});
});
您可以做的几件事:
- 在页面加载时检查登录状态,并在用户单击时准备就绪
- 将回调传递到CheckForSession中,当服务器发出响应时,CheckForSession会运行
就我个人而言,我会选择选项1。
相关文章:
- Ember.js:如果控制器中满足某些条件,则在路由器中重定向
- Node.js/Expss.js.如果与通配符路由器一起使用,则无法识别静态路由器
- JS-如果是语句运算符,这是怎么编译的
- JS:如果select是默认值,则禁用复选框
- 修改 yii.activeForm 是个好主意吗.js如果不是,另一种方法是什么
- 无法从节点调用 REST.js如果我从浏览器调用,则可以正常工作
- 灰尘.js如果数组中的值
- gulpfile.js如果全局安装了 gulp,则自动创建
- 告诉html文档不要加载JS如果移动设备
- 节点.js如果我使用 process.send(),请等待回调/响应
- 视频.js :如果视频暂停,如何淡出控制栏
- 余烬JS:如果等于参数的问题
- 在节点中热重载外部 js 文件.js如果文件有任何更改
- Angular Js:如果我需要实时将状态从活动更改为非活动,请使用ng
- Angular js如果条件不起作用
- js-如果不满足目标值,如何默认为特定值
- Parsley.js如果值为空,则不使用远程验证
- chart.js如果没有数据,隐藏空图表并保留以前的数据.net MVC
- 加载网页如何自动检测是否有JS.如果禁用,请切换到HTML
- Angular js-如果ng repeat为空,则显示消息