javascript - 空 php session (if else 语句)

标签 javascript php jquery ajax session

我一直想创建一个 JavaScript 函数来更改登录和未登录用户的 PHP session 超时。

我已将 session 超时添加到header.php。这是因为当用户登录时,用户可以访问整个网站。但是,某些页面可供登录和未登录用户访问。

我不确定如何在 if else 语句中使用 JavaScript,以便区分访客 session id 或者可能是 Ajax 成功适应真实的情况或 PHP 返回错误。我不确定应该如何完成。

到目前为止,我的网站将为登录和未登录的用户显示弹出窗口,因为我在 header.php 中添加了 session 超时和 Ajax

到处搜索,但根本找不到任何线索。请帮我。谢谢!这是我的代码。

ajax.js

window.onload = init;
var interval;
function init() {
    interval = setInterval(trackLogin, 1000);
}
function trackLogin() {
    var xmlReq = false;
    try {
        xmlReq = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlReq = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e2) {
            xmlReq = false;
        }
    }
    if (!xmlReq && typeof XMLHttpRequest != 'undefined') {
        xmlReq = new XMLHttpRequest();
    }

    xmlReq.open('get', 'check.php', true);
    xmlReq.setRequestHeader("Connection", "close");
    xmlReq.send(null);
    xmlReq.onreadystatechange = function() {
        if (xmlReq.readyState == 4 && xmlReq.status == 200) {
            if (xmlReq.responseText == 1) {
                clearInterval(interval);
                alert('You have been logged out. You will now be redirected to home page.');
                document.location.href = "index.php";
            }
        }
    }
}

最佳答案

在我看来,您的服务器似乎返回了 1,这就是 xmlReq.responseText == 1 行正在评估的内容。相反,只需返回一个 JSON 对象,然后解析该响应并查找结果。

在 PHP 中,返回 JSON 编码数组,而不是返回 true

return json_encode(array(
    'role' => $_SESSION['role'], //assuming something like guest/logged-in
    'user_id'   => $_SESSION['user_id']
));

然后像这样解析您的响应文本以进行比较:

var obj = xmlReq.responseText;
var jsonObj = JSON.parse(obj);
//now we can make a comparison against our keys 'role' and 'user_id'

if(jsonObj['role'] == 'guest'){
    //guest role, do something here
} else if (jsonObj['role'] == 'logged-in') {
    //do something else for logged in users
}

祝你好运。

关于javascript - 空 php session (if else 语句),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33513713/

相关文章:

php - 如何对表的行进行排序?

javascript - 如何在plupload中定义过滤器

javascript 时间行情指示器

javascript - Threejs Vector3 取消投影相机

javascript - JSON.stringify 设置根元素

php - 在 ubuntu 下的 php 中运行 R

php - 从摘录中删除短代码(有代码)

javascript - 如何在react-redux中等待特定的prop更改

javascript - 使用 jquery 添加/删除类但不重绘元素以反射(reflect)

jquery - 在 jQuery 中监听文档级别的事件有什么缺点吗?