【问题标题】:Empty php session (if else statement)空 php 会话(if else 语句)
【发布时间】:2015-11-04 04:28:26
【问题描述】:

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

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

我不确定如何在if else 语句中制作JavaScript,这样它可以区分来宾session id,或者可能是Ajax 成功地适应来自PHP 的真或假返回。我不确定应该怎么做。

截至目前,我的网站将显示登录和未登录用户的弹出窗口,因为我在 header.php 中添加了会话超时和 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";
            }
        }
    }
}

【问题讨论】:

    标签: javascript php jquery ajax session


    【解决方案1】:

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

    在 PHP 中,返回一个 JSON 编码的数组,而不是 return 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
    }
    

    祝你好运。

    【讨论】:

    • 哇,我可以先试试,因为我还是新手。我应该在ajax.js 中编码吗? @Ohgodwhy
    • javascript部分(第二部分)应该替换整个条件语句:if(xmlReq.responseText ==1){一直到你用}关闭它
    • 我提到了你的例子,但我没有得到任何弹出说明登录用户已被注销@Ohgodwhy
    猜你喜欢
    • 2016-11-21
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2015-07-07
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    相关资源
    最近更新 更多