2012-05-07 55 views
-1

我需要幫助根據我在數據庫中檢查的輸入數據解決我的問題之一。如果存在價值,我將轉發到另一個頁面;否則會顯示錯誤。 輸入任何值都會顯示相同的結果,我無法使用php代碼查看回顯。 測試代碼本身工作正常,但與HTML代碼集成時,它失敗。 有人可以識別代碼中的任何錯誤嗎?我如何解決問題?無法重定向到另一頁

<!DOCTYPE html> 
<?php 
if (isset($_POST["submit"])) { 
    include("connect.php"); 

    $message = NULL; 
    if(empty($_POST["empid"])) { 
     $u = FALSE; 
     $message .= "You have to enter your Employee ID !<br />"; 
    } 
    else { 
     $u = intval(stripslashes(trim($_POST["empid"]))); 
    } 

    if($u) { 
     $query = "SELECT Emp_ID FROM Data WHERE Emp_ID = '$u' "; 
     $result = @mysql_query($query); 
     $row = mysql_fetch_array($result); 
     if($row){ 
      session_start(); 
       header("Location: ModifyEmpInfo.php?empid=$u"); 

      exit(); 
     } 
     else { 
      $message .= "Employee ID provided does not exists. Try again!<br />"; 
     } 
    } 

} 
$page_title = "FindEmpolyee"; 
if(empty($message)) { 
    echo "<font color=red>So sorry, this page is only for Test members !</font>"; 
} 
else { 
    echo "<font color=red>"; 
    echo $message; 
    echo "</font>"; 
} 

?> 
<html><head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <script type="text/javascript" src="FindEmpInfo_files/form_init.js" id="form_init_script" data-name=""> 
    </script><link href="FindEmpInfo_files/jquery-ui-1.css" type="text/css" rel="stylesheet"><link href="FindEmpInfo_files/normalize.css" type="text/css" rel="stylesheet"><script src="FindEmpInfo_files/jquery-1.js" type="text/javascript"></script> 
    <link rel="stylesheet" type="text/css" href="FindEmpInfo_files/default.css" id="theme"> 
    <title> 
     FindEmpolyee 
    </title> 
    <script src="FindEmpInfo_files/jquery-ui-1.js" type="text/javascript"></script><script src="FindEmpInfo_files/jquery_002.js" type="text/javascript"></script><script src="FindEmpInfo_files/jquery_004.js" type="text/javascript"></script><script src="FindEmpInfo_files/jquery.js" type="text/javascript"></script><script src="FindEmpInfo_files/jquery_003.js" type="text/javascript"></script><script src="FindEmpInfo_files/validation_data.js" type="text/javascript"></script><script src="FindEmpInfo_files/validation.js" type="text/javascript"></script></head> 

    <body> 
    <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" style="WebkitTransform: " id="docContainer" class="fb-toplabel fb-100-item-column selected-object" enctype="multipart/form-data" method="post" action="" novalidate="novalidate" data-form="preview"> 
     <div style="BACKGROUND-COLOR: #d941d9; MIN-HEIGHT: 20px" id="fb-form-header1" class="fb-form-header"> 
     <a id="fb-link-logo1" class="fb-link-logo" href="" target="_blank"><img style="display: none;" id="fb-logo1" class="fb-logo" title="Alternative text" alt="Alternative text" src="FindEmpInfo_files/image_default.png"></a> 
     </div> 
     <div id="section1" class="section"> 
     <div id="column1" class="column ui-sortable"> 
      <div style="FILTER: " id="item1" class="fb-item fb-100-item-column"> 
      <div class="fb-header fb-item-alignment-center"> 
       <h2 style="DISPLAY: inline; FONT-FAMILY: comic sans ms; COLOR: #249ee0; FONT-SIZE: 28px"> 
       Find Employee Information 
       </h2> 
      </div> 
      </div> 
      <div id="item3" class="fb-item fb-100-item-column"> 
      <div class="fb-grouplabel"> 
       <label style="DISPLAY: inline" id="item3_label_0"> 
       Enter Employee Id 
       </label> 
      </div> 
      <div class="fb-input-number"> 
       <input id="item3_number_1" name="empid" min="0" max="999999999" step="1" data-hint="" autocomplete="off" required="" type="number" value="<?php if(isset($_POST["empid"])){echo $_POST["empid"];}?>"> 
      </div> 
      </div> 
     </div> 
     </div> 

     <div id="fb-submit-button-div" class="fb-item-alignment-center"> 
     <input style="" id="fb-submit-button" class="fb-button-special" value="Submit" type="submit" name="submit"> 
     </div> 
    </form> 


</body></html> 

解決方案:問題是,這個名字不會被髮送到PHP代碼。

+0

不是'<?php_SELF']?>'try'<?php echo $ _SERVER ['PHP_SELF']?> – vooD

回答

0

您需要在頁面上的任何非PHP輸出之前擁有重定向代碼。標題需要在內容之前發送。現在你在PHP之前有一個doctype

基本上,在調用header()之前,請確保您沒有向瀏覽器輸出任何內容(通過out-of-php文本或echo文本或包含的內容)。

6

在任何輸出發送到瀏覽器之前,您只能使用header

只要PHP遇到您的<!doctype>行,它就會開始向瀏覽器發送輸出,從標頭開始,告訴瀏覽器它正在接收「text/html」。一旦標題發送可能不再使用header來修改它們。

你需要移動所有你的HTML,包括文檔類型,下面會被重定向你的PHP代碼:

<?php 
... 
?> 
<!DOCTYPE html> 
<html><head> 
... 
-1

所有你需要做的就是把這個代碼在最高層(任何東西之前否則!)

ob_start(); 

這會告訴服務器在完全創建並生成之前不要發送頁面。除了讓您實時發送標題(一個非常漂亮的功能),它還包含一些性能優勢。你可以在PHP manual上閱讀更多關於它的信息。

此外,使用header(),您必須發送您希望瀏覽器重定向到的完整http:// URL,就像Javascript window.location一樣。

+0

不是'ob_start'是最糟糕的解決方案。它治療症狀,但不是問題。這裏絕對*不需要輸出緩衝。以下是一個**錯誤的事情,而不是你應該想要的功能:「這將告訴服務器不要發送頁面,直到它完全被創建並生成爲止。」沒有性能優勢,只有缺點。 – meagar

+0

對輸出緩衝很少有絕對_need_,但有潛在的性能優勢,並且作爲額外的好處,它允許使用header()。使用ob_start,您可以啓用Gzipping,與使用php.ini執行時不同,您可以在不啓用gzip的情況下選擇性地禁用瀏覽器。 Gzipping也可以將文件大小減少大約50%。 –

+2

沒有性能優勢,它增加了一層複雜性,不需要任何東西。並允許你寫破碎的意大利麪代碼不是「額外的好處」。你的邏輯應該在HTML輸出之前,而不是以'ob_start'允許的方式混入它。輸出緩衝具有有效用途。這不是其中的一個。在這種情況下使用它是一個醜陋的黑客。 – meagar