2015-10-14 160 views
-1

我讀了很多關於此的帖子,但似乎沒有幫助我。PHP:標題不起作用

我一直在工作一個測試本地服務器,一切都一直在順風順水,但是當我將它上傳到網絡時,php突然無法正常工作。我連接到數據庫和所有。我的主要問題是頭部(據我所知)。

我一直在剃鬚的碼位,並簡化其縮小的問題,並得出結論,這是頭:

<?php 
require 'admin/Connections/Connections.php'; 
session_destroy(); 
if(isset($_POST['Login'])){ 

$UN = $_POST['Username']; 
$PW = $_POST['password1']; 

$result = mysql_query("select * from admin where Username='$UN'"); 

$row = mysql_fetch_array($result); 
echo $row['Password']; 
echo $_POST['password1']; 

if($PW == $row['Password']){ 

header('Location: admin/home.php'); 

}else{ 

    $_SESSION["LoginFail"] = "Yes"; 
} 
} 
?> 

回聲吐出既$崗位和$行一樣值,所以我知道它應該執行標題,但它只是用添加的回聲刷新頁面。

我試着用類似http://www.google.com/的東西來替換網址,但是這帶我回到了帶回聲的空白頁面。我錯過了什麼?如果它是明顯的東西,你有權限垃圾我,只要你給我一個答案...

+6

頭(),如果你打印輸出任何東西都不行。你在header()之前打印出兩個變量。 – DNReNTi

+0

如果你有echo'd東西然後頭**不會做任何事情**因爲你已經發送到瀏覽器的頭,你不能修改這一點後的頭。 –

+1

任何調試的第一步都是打開錯誤報告。一個附帶說明,你似乎使用折舊的SQL函數,直接在SQL查詢中使用用戶輸入,並在數據庫中保存明文密碼,這些都是他們自己的嚴重問題 – Steve

回答

0

你不能使用PHP的header函數後echo,只是把它放在你的echo之前,那麼它應該工作。

0

如果您向客戶端進行任何輸出,則不能使用header()函數。有時它被稱爲「頭文件已發送」通知。

此外,請考慮從mysql_*函數一直移動,因爲它們已被棄用,將不再受支持。嘗試mysqli

2

在使用header()之前回應輸出將停止標題的工作。從PHP文檔header()

記住header()函數必須在發送任何實際輸出之前,無論是普通的HTML標籤,在一個文件中的空行,或從PHP調用。

至少,header()調用應該在您的代碼中調用echo之前。如果這不起作用,請檢查代碼頂部的require() ed文件中是否有輸出。

1

您正在輸出HTML與echo。因此,header將不會重定向。

解決方案:

1)在頁面開始添加ob_start()。這會將所有輸出存儲到緩衝區,因此您的頁面將不會有任何HTML輸出,將發生重定向。

2)評論代碼echo s。

3)使用JavaScript重定向:

echo "<script>window.location.href='admin/home.php';</script>"; 

這將工作無論是什麼在頁面上輸出。

0

首先,刪除您的回聲或評論他們。 當你將用戶帶到其他頁面時,爲什麼你會在這裏迴應什麼?向誰展示?

在你的PHP文件即頂部

,寫ob_start();

<?php 
ob_start(); 
--------the rest of your code---