通过AJAX调用的PHP标头()无法正常工作

我是Web开发的新手.

目前,我正在网站上使用登录功能.我使用Javascript / AJAX来获取用户名和密码,并将其发送到PHP文件以在MysqL数据库上进行验证.那就是我要做的.

我的问题是为什么header()函数不能正常工作?我想要在用户登录后将她重定向到个人资料页面(profile.PHP)

这是PHP代码段(login.PHP):

$query = "SELECT * from user WHERE username = '$uname' AND password = md5('$pass');";
$ret = MysqL_query($query) or die(MysqL_error());

if(!$ret) {
    $msg = "Invalid query " . MysqL_error() . "\n";
    $msg .= "Whole query " . $query;
    die($msg);
}

$userid = -1;
while($row = MysqL_fetch_array($ret)) {
    $userid = $row["ID"];
}

$cnt = MysqL_num_rows($ret);
if($cnt == 1) {
    session_start();
    $_SESSION["userid"] = $userid;
    $_SESSION["uname"] = $uname;
    echo "You have logged in successfully!";
    header("Location: profile.PHP");
} else {
    echo "Wrong Username/Password";
}

这是针对Javascript(AJAX函数)的:

var obj;
    var url = "login.PHP";
    var params = "uname=" + document.getElementsByName("uname")[0].value + "&pass=" + document.getElementsByName("pass")[0].value;
    if(window.XMLHttpRequest) { // Major browsers
        obj = new XMLHttpRequest();
        obj.open("POST",url,true); 
        obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        obj.setRequestHeader("Content-length", params.length);
        obj.setRequestHeader("Connection", "close");
        obj.onreadystatechange = function() {
            if(obj.readyState == 4) {
                if(obj.status == 200) {
                    // success
                } else {
                    alert("Problem in returned data" + "Error status=" + obj.status);
                }
            }
        }
        obj.send(params);

解决方法:

我认为重定向不会与AJAX一起使用.这将发生:

> AJAX请求发送到login.PHP
> login.PHP发回标头,其中包含Location:profile.PHP
>然后浏览器重定向获取profile.PHP
> profile.PHP的结果然后传递到您的XMLHttpRequest对象.

一种获取AJAX响应来重定向页面方法是:

> login.PHP的响应返回一个JSON响应,其中包含状态代码(302或301)以及重定向到的位置.
>响应本身的状态码为200(成功).
>处理JSON响应并检查302或301的状态码,然后重定向到该位置.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...