2015-08-15 69 views
-1

我想让我的PHP文件重定向到一个HTML文件。不能使用标题重定向从PHP到Javascript

我的网站是构建这样:

HTML ==> JS单独的文件(使用角)===> PHP文件

那么php调用头函数 - 而不是重定向,它打印我试图打开的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); 
+0

HTML页面正在Ajax请求到这个网页? – chris85

+0

是的。使用:$ http.post – Mapisto

+1

我不认为一个Ajax请求会重定向一个用户,尽管如此,也许不会在js中工作?我会尝试返回1或0; 1有效。如果'1',然后使用window.location(我认为)引导用户回到html页面。 – chris85

回答

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; 
}); 
... 
+0

真棒回答。谢谢。我试图用$ http实现它(我不使用JQuery)。 完成后我会回来。 – Mapisto

+0

像魔术一样工作。 我一直在寻找这一段时间...你不知道你有多大的帮助! 谢谢! :) – Mapisto

+0

不客气。很高兴我帮你=) – ankhzet