标头未发送,尽管以前可以正常工作

时间:2019-06-17 04:26:29

标签: php html header

在使用发送发送按钮后,使用PHP Header方法重定向到另一个页面时遇到了问题,尽管以前运行良好。在放置其他表单字段后,问题开始了。

试图寻找任何空格,将代码删除到以前的工作状态证明是徒劳的。

<?php
    session_start();

    $hostname_mysql = "localhost";
    $database_mysql = "smartsaf_angkasa";
    $username = "root";
    $password = "";

    $mysql = mysql_connect($hostname_mysql, $username, $password);

    $errors = array();
    //mysql_select_db( $database_mysql, $mysql);

    if(!$mysql)
        echo "".mysql_error();
    else{
        //echo "<h2>Connected to database successfully ".mysql_error()."</h2>";
        mysql_select_db($database_mysql);
    }

    if ($_SERVER['REQUEST_METHOD'] != 'POST')
    {
?>  

<div>

  <form class="main-container" action="admin-pakej.php" method="post" enctype="multipart/form-data" >
        <div class="input-form"><label for="desc" name="lbldesc">Description</label></div><div class="input-form-right"><input type="text" name="description" size="60" required ></div>
        <div class="clr"></div>
        <div class="input-form"><label for="Market Price" name="lblmarketprice">Market Price</label></div><div class="input-form-right"><input type="text" name="marketprice" id="marketprice" size="20" required ></div>
        <div class="clr"></div>
        <div class="input-form"><label for="Membership No" name="lblmemberno">Membership Number</label></div><div class="input-form-right"><input type="text" name="membershipno" id="membershipno" size="20" onblur="change()" ><div id="disabled-text-box"><input type="text" name="membersname" size="35" disabled></div></div>
        <div class="clr"></div>
        <div class="input-form"><label for="Member Price" name="lblmemberprice">Members Price</label></div><div class="input-form-right"><input type="text" name="membersprice" id="membersprice" size="20" required ></div>
        <div class="clr"></div>
        <div class="input-form"><label for="Point PV" name="lblpointpv">PV Points</label></div><div class="input-form-right"><input type="text" name="pointpv" id="pointpv" size="20" required ></div>
        <div class="clr"></div>
        <div class="input-form"><label for="Package Type" name="lblpackagetype">Package Type</label></div><div class="input-form-right"><select name="package" id="package"><option value="gold">Gold</option><option value="silver">Silver</option><option value="bronze">Bronze</option></select></div>
        <div class="clr"></div>
        <div class="input-form"><label for="Product Page" name="lblproductpage">Product Page HTML File Name</label></div><div class="input-form-right"><input type="text" id="productpage" name="productpage" size="30"></div>
        <div class="clr"></div>
        <div class="input-form"><label for="Product Pics" name="lblproductpics">Product Pics</label></div><div class="clr"></div>
        <div class="input-form-right"></div><div class="input-form-right"><input type="file" id="upload" name="upload" onchange="readURL(this)"></input><img id="blah" class="container" src="#" alt="preview image" /></div>
        <div class="clr"></div>
        <div class="input-form"></div><div class="button"><button type="submit" id="submit" name="submit">Submit</button></div>
  </form>
  </div>
  <div class="clr"></div>
  <div><p>
    <!--<ul>-->
<?php
    }
    else
    {
        $desc_product = $_POST['description'];
        $membershipno = $_POST['membershipno'];
        $product_pics = $_FILES['upload']['name'];
        $market_price = $_POST['marketprice'];
        $membersprice = $_POST['membersprice'];
        $package_type = $_POST['package'];
        $pv_points = $_POST['pointpv'];
        $productpage = $_POST['productpage'];


    if (empty($desc_product) || empty($product_pics) || empty($membershipno) || empty($membersprice) || empty($pv_points) || empty($productpage))
    {
        array_push($errors, "Fields are empty");
    }
    else
    {           
        $query = "INSERT INTO product_final (desc, ext_member_id, productpics, marketprice, memberprice, packagetype, pv_points, productpage, category) VALUES
                                ('$desc_product', '$membershipno', '$product_pics', '$market_price', '$membersprice', '$package_type', '$pv_points', '$productpage', '')'";

        $result = mysql_query($query, $mysql);

        if ($result)
        {
            if (!headers_sent())
            {
                header("location:record_page.php");
                exit;
            }
            else
            {
                echo "Headers already sent";
                exit;
            }
        }
        //else
            //echo "".mysql_error($mysql);
    }

}
?>
    <!--</ul>--></p>
    </div>
 </body>

<script type="text/javascript">
    function readURL(input)
    {
        if (input.files && input.files[0])
        {
            var reader = new FileReader();
            reader.onload  = function(e)
            {
                $("#blah")
                .attr("src", e.target.result)
                .width(300)
                .height(250);
            };
            reader.readAsDataURL(input.files[0]);
        }
    }

    function getpicPath()
    {
        document.getElementById("imgs").innerHTML;

    }


</script>
</html>

期望至少会收到一条错误消息,以找出将提交的表单提交到另一个页面作为确认已处理表单的过程的真正原因。

2 个答案:

答案 0 :(得分:0)

我认为您应该尝试

if(mysql_affeted_rows($result)==1)
{
    if (!headers_sent())
            {
                header("location:record_page.php");
            }
            else
            {
                echo "Headers already sent";
                exit;
            }
}

代替该条件,并且一旦您通过标题重定向,我就不需要使用exit()。 谢谢。

答案 1 :(得分:0)

您基本上会遇到此问题,因为在尝试发送标头之前,已包含一些HTML代码(仅在发送标头之前)。 您的表单代码仅在最初发送标头,因此以后无法发送http标头。 使用输出缓冲,即在脚本的开头,放置ob_start(),最后放置ob_flush()。这样,PHP可以首先等待所有输出收集完毕,确定以什么顺序呈现它,然后将其输出。

guide for using output buffer