Php 标题未发送,尽管之前它正在工作

Php 标题未发送,尽管之前它正在工作,php,html,header,Php,Html,Header,在发送submit按钮后,使用PHP头方法重定向到另一个页面有一个问题,尽管以前它工作正常。问题是在添加了其他表单字段后开始的 尝试查找任何空白,将代码删除到以前的工作状态证明是徒劳的 <?php session_start(); $hostname_mysql = "localhost"; $database_mysql = "smartsaf_angkasa"; $username = "root"; $password = "";

在发送submit按钮后,使用PHP头方法重定向到另一个页面有一个问题,尽管以前它工作正常。问题是在添加了其他表单字段后开始的

尝试查找任何空白,将代码删除到以前的工作状态证明是徒劳的

<?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>

描述
市场价格
会员编号
会员价格
PV点
包装类型金银青铜
产品页面HTML文件名
产品图片
提交


我想你应该试试

if(mysql_affeted_rows($result)==1)
{
    if (!headers_sent())
            {
                header("location:record_page.php");
            }
            else
            {
                echo "Headers already sent";
                exit;
            }
}
我不认为您需要使用
exit()。

谢谢。

您遇到了这个问题,基本上是因为在您尝试发送标题之前包含了一些HTML代码(仅在发送标题之前)。 表单代码最初只发送头,因此以后无法发送http头。 使用输出缓冲,即在脚本的最开始,放入ob_start(),最后放入ob_flush()。这使PHP能够首先等待所有输出被收集,确定呈现它的顺序,然后输出它


mysql.*
现在已弃用并删除库。请切换到
PHP7
以及
mysqli.*
PDO
库。还可以使用这些库的prepared statements功能来防止您的代码被SQL注入。我需要使用版本5,因为它当前应用于服务器。目前的方向是我们不升级。但无论如何,我会调查准备好的声明。对我来说是一件新鲜事。刚刚开始返回我一直错过的内容。
退出
死亡
必须在
头()后重新定向。因为
header()。这就是为什么如果你不在它后面添加
exit
die
,它会造成一个很大的安全漏洞。谢谢你,rishabh。现在我做了几次检查,发现真正搞砸的是我发送的表单的内容。如果我从表单头中删除enctype=“multipart/form data”,我可以获得除上传文件之外的所有数据。如果我再次将其放回,则单击“提交”按钮后不会发送任何数据。为什么会发生这种情况?enctype=“multipart/form data”用于上传文件,当文件被删除时,不会上传文件。我建议添加ob_start();在PHP代码的最开始部分。