使用Ajax运行php脚本来更改登录系统的会话变量

时间:2018-05-27 03:59:16

标签: javascript php ajax http

我正在创建一个带有大学作业登录系统的网站。我创建的方法有一个php页面(主页面)顶部有一个部分,用于检查用户的会话变量:

<?php
    // open the session
    session_start();
    header('Access-Control-Allow-Origin: *');
    // check for existing user
    if(isset($_SESSION['User'])){
        $isUser = true;
        $userName = $_SESSION['userName'];
    }else{
        $isUser = false;
    }
?}

还有更多内容,但其余的只是使用会话添加适当字段的功能(登录部分/登录确认)这很好。

为了更改会话变量,使用了登录确认功能(非常长的脚本来检查数据库,也完美地工作),并在登录结束时检查是否正确更改了会话变量,如下所示:

//Start the session
session_start();
$arrUser = $result[0];
$_SESSION['User'] = $arrUser[0];
$_SESSION['userName'] = $arrUser[1];
return true;

这个工作,如果加载在一个单独的页面中(更改会话变量并调整页面以确认会话已更改,只有在手动打开带有变量的URL时)。但是尝试使用ajax运行php:

function Login(){

    var Username = document.getElementById("Username");
    var Password = document.getElementById("Password");

    if(Username.value != "" && Password.value != ""){

        URL = "https://localhost/CAB230/Login.php?username=" + Username.value +
            "&password=" + Password.value;

        httpGetAsync(URL, function(response){
            if(response){
                location.reload();
            } else {
                document.getElementById("Username").style.background = "red";
                document.getElementById("Password").style.background = "red";
            }
        });
    } else {
        window.alert("Username and Password fields must both be filled out");
    }
}


function httpGetAsync(theUrl, callback){

    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function() { 
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
            callback(xmlHttp.responseText);
    }
    xmlHttp.open("GET", theUrl, true); // true for asynchronous 
    xmlHttp.send(null);
}

导致true返回并重新加载页面,但会话变量不会随着登录部分的加载而改变而不是登录确认部分。

这非常令人困惑,因为在我的笔记本电脑上运行此ajax会更改会话变量,但是在我的电脑上这不起作用。

0 个答案:

没有答案