header('Location:..')正在发送get请求,而不是重定向

时间:2015-01-25 12:31:13

标签: php angularjs redirect login header

我尝试在登录后重定向用户,但不是重定向,而是发送 GET 请求,页面保持不变。我想避免从前端重定向,因为我必须为会话设置一些参数。

这是登录脚本:

require_once("../data/db.php");

$input = json_decode(file_get_contents("php://input"));
$user = $input->user;
$pass = $input->pass;

$db = new DB();
$result = $db->read($user, $pass);

switch($result[0]->mode)
    case "patient":
        header("Location: ../patient.php");
        break;
    case "doc":
        header("Location: ../doc.php");
        break;
    default:
        header("Location: ../index.php?error=" . $result);
        break;
};

控制台输出:

GET http://localhost/patient.php                     [HTTP/1.1 200 OK 3ms]

由于在调用header()函数之前没有输出,我不确定导致问题的原因。 请求登录脚本由$ http.post()angularJS方法发送。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

由于HTTP请求是使用javascript中的某个post()方法发送的,因此无法重定向您的网页。您需要更改PHP登录脚本,仅回显URL,如:

echo "../doc.php";

然后在客户端使用javascript重定向浏览器。我不熟悉angularJS中的$ http.post(),但是您需要在一些成功函数中执行此操作(一旦.post()成功调用它)并在javascript中执行重定向

location.href=data_received_from_post_request;