无法重定向到其他页面

时间:2012-05-07 14:46:20

标签: php html redirect post header

根据我在数据库中检查的输入数据,我需要帮助解决我的一个问题。如果值存在,我转发到另一页;否则出现错误。 输入任何值显示相同,我无法使用php代码查看echo。 单独测试代码工作正常,但是当与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代码。

3 个答案:

答案 0 :(得分:6)

在将任何输出发送到浏览器之前,您只能使用header

一旦PHP遇到你的<!doctype>行,它就会开始向浏览器发送输出,从标题告诉浏览器它正在接收“text / html”。发送标头后,可能不再使用header来修改它们。

您需要在重定向的PHP代码下面移动所有 HTML,包括doctype:

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

答案 1 :(得分:0)

您需要在页面上的任何非PHP输出之前获得重定向代码。标题需要在内容之前发送。现在你的PHP之前有一个doctype

基本上,只需确保在调用header()之前,您没有向浏览器输出任何内容(通过php外文本或echo文本或包含的内容)。

答案 2 :(得分:-1)

您需要做的就是将此代码置于最顶层(在其他任何事情之前!)

ob_start();

这将告诉服务器在完全创建和生成页面之前不发送页面。除了让您实时发送标题(一个非常漂亮的功能),它还包括一些性能优势。您可以在PHP manual找到更多相关信息。

此外,使用header(),您必须发送您希望浏览器重定向到的完整http:// URL,就像Javascript window.location一样。