2012-05-07 14 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 $ _SERVER ['PHP_SELF']?>' try '<?php echo $ _SERVER ['PHP_SELF']?> ' – vooD

答えて

0

ページにPHP以外の出力がある場合は、リダイレクトコードが必要です。コンテンツの前にヘッダーを送信する必要があります。今すぐPHPの前にdoctypeがあります。

基本的には、header()が呼び出される前に、ブラウザにコンテンツが出力されていないことを確認してください(php以外のテキストまたはエコーテキストまたは含まれているコンテンツ)。

6

出力がブラウザに送信される前に、headerしか使用できません。

PHPがあなたの<!doctype>行に遭遇するとすぐに、ブラウザに "text/html"を受け取っていることをブラウザに伝える出力をブラウザに送信し始めます。ヘッダーが送信されると、それを変更するのにもうheaderを使用できなくなります。

あなたはリダイレクトPHPコードの下に、DOCTYPEを含むすべてあなたのHTMLを、移動する必要があります:あなたがする必要があるのは何も前に(一番上にこのコードを入れて

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

else!)

ob_start(); 

これにより、サーバーが完全に作成されて生成されるまで、サーバーに送信しないように指示します。リアルタイムでヘッダーを送信させるのとは別に(かなり気の利いた機能)、パフォーマンス上の利点がいくつかあります。 PHP manualで詳細を読むことができます。

さらに、header()では、Javascriptのwindow.locationと同様に、ブラウザがリダイレクトする完全なhttp:// URLを送信する必要があります。

+0

いいえ、ob_startは最悪の解決策です。症状は治療しますが、問題は治療しません。ここでは、出力バッファリングの必要は絶対にありません。次は**悪いことです**、あなたが望むべき機能ではありません: "これは、完全に作成され、生成されるまで、サーバーにページを送信しないように指示します。パフォーマンス上の利点はありませんが、欠点のみがあります。 – meagar

+0

出力バッファリングのための絶対_need_はほとんどありませんが、パフォーマンス上のメリットがあり、さらにメリットとしてheader()を使用できます。 ob_startを使用すると、gzipを有効にすることができます。これはphp.iniで実行された場合と異なり、gzipが有効になっていないブラウザでは選択的に無効にすることができます。 Gzippingは、ファイルサイズを約50%削減することもできます。 –

+2

パフォーマンス上の利点はなく、必要のない複雑なレイヤーを追加します。壊れたスパゲッティコードを書くことは、「特別な利益」ではありません。あなたのロジックはHTML出力に先行する必要があり、 'ob_start'が可能にする方法と混合しないでください。出力バッファリングには有効な用途があります。これはその1つではありません。この状況でそれを使用するのは醜いハックです。 – meagar

関連する問題