【问题标题】:Can't use header-redirect from PHP to Javascript无法使用从 PHP 到 Javascript 的标头重定向
【发布时间】:2015-08-15 22:41:05
【问题描述】:

我正在尝试将我的 PHP 文件重定向到 HTML 文件。

我的网站是这样构建的:

HTML ==> js 单独文件(使用角度)===> PHP 文件

然后 php 调用 header 函数-但不是重定向,而是打印我试图打开的 HTML 页面的代码。

在调用标头函数之前我没有回显任何内容(尽管我在 PHP 文件的开头使用了一个标头进行访问控制)。

我也尝试用想要的 URL 回显“meta http equiv”标签,但它只是打印了标签。

也许是因为我为 php、js 和 HTML 使用了单独的文件?

谢谢!

这是我的 PHP 代码:

header("Access-Control-Allow-Origin: *");
//header("Content-Type: application/json; charset=UTF-8");
$servername = "localhost";
$username = "root";
$password = '';

// Create connection
$conn = mysqli_connect($servername, $username, $password, "myDB");
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
$client_data = file_get_contents("php://input");
$json = json_decode($client_data);
$sql = "SELECT Password FROM users WHERE Name=\"". $json->username ."\"";
$result = $conn->query($sql);
if ($result->num_rows >0) {
    while ($row = $result->fetch_assoc()) {
        if (password_verify($json->password ,$row["Password"])) {
            header ('location: http://localhost/KickStartProject/views/register.html');
        } else {
            echo "Password didn't match.....";
        }
    }
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

mysqli_close($conn);

【问题讨论】:

  • HTML 页面正在向该页面发出 ajax 请求?
  • 是的。使用:$http.post
  • 我不认为 ajax 请求会重定向用户,虽然在 js 中工作不多,但也许它会?我会尝试返回 1 或 0; 1 为有效。如果1 则使用 window.location(我认为)将用户引导回 html 页面。

标签: javascript php html redirect header


【解决方案1】:

正如@chris85 在他的评论中指出的那样,ajax 请求不会影响当前文档的位置。您应该像这样进行重定向:

<?php
header("Access-Control-Allow-Origin: *");
...
if (!$conn) {
    die(json_encode(["status"=>"err", "msg" => "Connection failed: " . mysqli_connect_error()]));
}
...
    if(password_verify ($json->password ,$row["Password"]) ){

        die(json_encode(["status"=>"ok", "redirect" => "/KickStartProject/views/register.html"]));
    }else{
        die(json_encode(["status"=>"err", "msg" => "Password didn't match....."]));
    }
...

在你的javascript中:

...
$.getJSON('/url-to-php', {...})
 .success(function(response) {
     if (response.status != "ok")
         alert(response.msg);
     else
         document.location.href = response.redirect;
 });
...

【讨论】:

  • 很棒的答案。谢谢。我正在尝试使用 $http(我没有使用 JQuery)通过 Angular 来实现它。完成后我会回来的。
  • 像魔术一样工作。我一直在寻找这个已经有一段时间了......你不知道你帮助了多少!谢谢!! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
  • 2018-05-22
  • 2011-06-16
  • 1970-01-01
  • 2021-07-07
  • 2011-09-22
相关资源
最近更新 更多