2015-08-15 26 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