2017-05-14 163 views
0

這是我的代碼,不太清楚爲什麼它不起作用,但無法處理。我可以正確處理phpinfo()。PHP無法處理請求

<?php 

include("tools.php"); 
$username = $_POST["uname"]; 
$email = $_POST["email"]; 
$pasword = $_POST["pword"]; 

if(isset($username) and isset($email) and isset($password)){ 
    if(add_user_database($username, $email, $password) == TRUE){ 
     echo "You've been added!!!"; 
     header("location:login.php"); 
    }else{ 
     echo "<script>alert('Error has occurd please contact " . 
          "support or try again later');</script>"; 
     header("location:register.php"); 
    } 
}else{ 
    echo "<script>alert('Please fill in all forms');</script>"; 
    header("location:register.php"); 
} 
?> 
+2

嘗試每個'頭之前除去回波語句()'呼叫的任何實際輸出之前被調用。當您想要重定向頁面時顯示任何消息是一種不好的做法。另外,根據您的PHP錯誤設置,它可能會引發錯誤。 – Ibrahim

+1

您是否收到任何錯誤?如果沒有,在PHP腳本的最上面添加這些行,ini_set('display_errors',1); error_reporting(E_ALL);'看看它是否會產生任何錯誤。 –

+1

這不是一個錯誤的做法。在使用header命令重定向呼叫之前,不能發送客戶端數據。 –

回答

0

從PHP文檔,

「記住header()函數被髮送的任何實際輸出之前,必須被調用,或者通過正常的HTML標記,空行在文件中,或從PHP,它是使用include或require函數或其他文件訪問函數讀取代碼時出現的一個非常常見的錯誤,並且在調用header()之前輸出了空格或空行,使用單個PHP/HTML文件時也存在同樣的問題。 「

如果你真的想要那些消息,你可以將它們設置爲$_SESSION('statusMessage');,然後在重定向頁面檢查它是否設置,回顯出某些內容並將它們設置爲未定義。

另請注意,請確保輸入在add_user_database()已被消毒!

編輯:

有用的提示

在檢查登錄腳本:

if(add_user_database()){ 
    $_SESSION['addUserStatus'] = "Success, you have been added, woo!"; 
    header("Location: someOtherPage.php"); 
}else{ 
    $_SESSION['addUserStatus'] = "Error! Please contact support for assistance!"); 
    header("Location: someOtherPage.php"); 
} 

在其他頁面:

if(isset($_SESSION['addUserStatus']){ 
    echo "<script>showLoginMessage('" . $_SESSION['addUserStatus'] . "')</script>"; 
    $_SESSION['addUserStatus'] = undefined; 
} 
+0

這將是我只是想讓它首先工作。 – Nathan

+0

Oki doki,我會用一些代碼更新答案(: –