我已經添加了一些服務器端驗證到我的一個網頁上的下拉框,當我做了網頁不會工作了。我添加的代碼如下:混淆爲什麼代碼只能使用ob_start();
$show_form = true;
if (isset($_POST['submit'])) {
//All of the server side validations
$validator = new FormValidator();
$validator->addValidation("hospital_name","dontselect=000","No facility was chosen");
if ($validator->ValidateForm()) {
// All the variables from the submission form
$userid = $_SESSION['user_id'];
$hosp = $_POST['hospital_name'];
header('Location: ../site_hospital' . $hosp . '/hospital_submitform.php?usr=' . $userid . '&&hosp=' . $hosp);
exit;
$show_form = false;
} else {
echo "<B style='color:red;'>The following errors occurred:</B>";
$error_hash = $validator->GetErrors();
foreach ($error_hash as $inpname => $inp_err) {
echo "<p style='color:red;'>$inp_err</p>\n";
}
}}
if (true == $show_form) {
通過純粹的機會,我添加了ob_start();作爲我調試頁面開始的一部分,突然間我的代碼正常工作,但我不知道爲什麼,我希望社區能夠拋出一個有根據的猜測。當代碼停止工作時,它不會執行上面的頁眉命令,當我添加ob_start()時,頁面只會刷新並且不會更改位置。到頁面頂部按照計劃重定向頁面。所以總的問題是,爲什麼頁面不直接使用header命令而沒有ob_start?我確信更多的細節和代碼對於明確的答案是必要的,但我希望有人遇到過這種情況,或者有一個有教養的猜測,可能會導致我自己的答案。感謝您的任何見解。
[Headers already already sent by PHP](http://stackoverflow.com/questions/8028957/headers-already-sent-by-php) – mario 2012-03-11 23:33:35