Javascript 警告:无法修改标题信息-标题已由发送(输出从/home/cabox/workspace/Project/ShoppingCart开始)

Javascript 警告:无法修改标题信息-标题已由发送(输出从/home/cabox/workspace/Project/ShoppingCart开始),javascript,php,html,css,Javascript,Php,Html,Css,难以识别引发错误的原因。已删除所有空白。使用CodeAnywhere作为我的IDE是我的要求。如有任何帮助,将不胜感激 完全错误: <?php session_start(); $connect = mysqli_connect("localhost", "root", "", "lab"); //connect to the db if(isset($_POST["add_to_cart"])) //if the add to cart value is set { if(i

难以识别引发错误的原因。已删除所有空白。使用CodeAnywhere作为我的IDE是我的要求。如有任何帮助,将不胜感激

完全错误

<?php 
session_start();
$connect = mysqli_connect("localhost", "root", "", "lab"); //connect to the db

if(isset($_POST["add_to_cart"])) //if the add to cart value is set
{
    if(isset($_SESSION["shopping_cart"])) //if the shopping cart session is set
    {
        $item_array_id = array_column($_SESSION["shopping_cart"], "item_id"); 
        //if there are values in your shopping cart loop through and display them
        if(!in_array($_GET["id"], $item_array_id))
        {
            $count = count($_SESSION["shopping_cart"]);
            $item_array = array(
                'item_id'           =>  $_GET["id"],
                'item_name'         =>  $_POST["hidden_name"],
                'item_price'        =>  $_POST["hidden_price"],
                'item_quantity'     =>  $_POST["quantity"]
            );
            $_SESSION["shopping_cart"][$count] = $item_array;
        }
        else
        {
            echo '<script>alert("Item Already Added")</script>'; 
            //restriction on design - can only add one instance of each product, delete if you want to add more
        }
    }
    else
    {
        $item_array = array(
            'item_id'           =>  $_GET["id"],
            'item_name'         =>  $_POST["hidden_name"],
            'item_price'        =>  $_POST["hidden_price"],
            'item_quantity'     =>  $_POST["quantity"]
        );
        $_SESSION["shopping_cart"][0] = $item_array;
    }
}

if(isset($_GET["action"]))
{
    if($_GET["action"] == "delete") 
        //when you select 'Remove', delete the values based on id. Alert box will show on completition
    {
        foreach($_SESSION["shopping_cart"] as $keys => $values)
        {
            if($values["item_id"] == $_GET["id"])
            {
                unset($_SESSION["shopping_cart"][$keys]);
                echo '<script>alert("Item has been removed from Shopping Cart")</script>';
                echo '<script>window.location="ShoppingCart.php"</script>';
            }
        }
    }
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Shopping Cart</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
        <!-- AJAX is about loading data in the background and display it on the webpage, without reloading the whole page.-->
    <link rel="stylesheet" type="text/css" href="thePerfectPair.css" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

    <script>
                // Get the modal
                var modal = document.getElementById('id01');

                // When the user clicks anywhere outside of the modal, close it
                window.onclick = function(event) {
                    if (event.target == modal) {
                        modal.style.display = "none";
                    }
                }
    </script> 
    </head>
    <body>
        <nav class="navigationBar">
        <!--Establishing the top left hand side of the Navigation Bar-->
        <div class="leftTopNavBar">
            &euro; EUR |
            <!--The following produces a pop up sign up form that is validated through javascript functions in the following code.
            I implemented this pop up form to create a different design element as opposed to just referring users to another page.
            All design element are assigned in the css file and it involved calling many different classes in order not to conflict
            with other forms and input boxes contained in the website-->
    <button onclick="document.getElementById('id01').style.display='block'" style="width:auto;" class="SignUpBtn0">SIGN UP |</button>
    <div id="id01" class="modal">
      <span onclick="document.getElementById('id01').style.display='none'" class="close" title="Close Modal">&times;</span>
        <form class="modal-content" action="/action_page.php">
          <div class="container1">
            <h1>Sign Up</h1>
            <p>Please fill in this form to create an account with Perfect Pair!</p>
            <hr>
            <b>Email</b>
            <input type="text" placeholder="Enter Email" name="email" required>
            <b>Password</b>
            <input type="password" placeholder="Enter Password" name="psw" required>
            <b>Repeat Password</b>
            <input type="password" placeholder="Repeat Password" name="psw-repeat" required>
            <label>
                <input type="checkbox" checked="checked" name="remember" style="margin-bottom:15px"> Remember me</label>
            <p>By creating an account you agree to our <a href="#" style="color:dodgerblue">Terms &amp; Privacy</a>.</p>
            <div class="clearfix">
                <button type="button" onclick="document.getElementById('id01').style.display='none'" class="cancelbtn">Cancel</button>
                <button type="submit" class="signupbtn">Sign Up</button>
                </div>
            </div>
        </form>
    </div>
            SAVED ITEMS
        </div>
        <!--Establishing the right side of the navBar-->
        <div class="rightTopNavBar">
            <input type="search" placeholder="Search..." name="search">
            <button type="submit"><i class="fa fa-search"></i></button>
            <a href="LogIn.php">LOGIN |</a> CART
            <i class="fa fa-shopping-cart" style="font-size:20px"></i>
        </div>
        <!--Establishing the middle of the navBar-->
        <div class="middleTopNavBar">
            <a href="ShoeHomePage.php"><img src="Images/perfectPairLogo.png" class="logoHeader" alt="logo" width="100" height="100"></a>
        </div>
        <!--Establishing bottom navBar-->
        <div class="bottomNavBar">
      <a href="ShoeHomePage.php" style="text-decoration:none"> <i class="fa fa-home" style="font-size:36px">&emsp;</i></a>
      <a href="Heels.php" style="text-decoration:none">&emsp;HEELS&emsp;</a>
      <a href="Sandals.php" style="text-decoration:none">&emsp;SANDALS&emsp;</a>
      <a href="Boots.php" style="text-decoration:none">&emsp;BOOTS&emsp;</a>
      <a href="Trainers.php" style="text-decoration:none">&emsp;TRAINERS&emsp;</a>
      <a href="Flats.php" style="text-decoration:none">&emsp;FLATS&emsp;</a>
      <a href="ShoppingCart.php" style="text-decoration:none">&emsp;SHOPPING CART&emsp;</a></div></nav>
        <div class="container">
            <br><?php $query="SELECT*FROM tbl_product1 ORDER BY id ASC"; $result=mysqli_query($connect, $query); if(mysqli_num_rows($result)>0){while($row=mysqli_fetch_array($result)){?><div class="col-md-4">
<form method="post" class="phpForm" action="ShoppingCart.php?action=add&id=<?php echo $row["id"];?>" >
                    <div class="formStyleDiv" style=" background-color:#f1f1f1; border-radius:1px; padding:16px; width:25%;" align="center">
                        <img src="Images/<?php echo $row["image"];?>" class="img-responsive" style="height: 200px;" />
                        <h4 class="text-info"><?php echo $row["name"];?></h4><br />
                        <h4 class="text-danger">&euro;<?php echo $row["price"];?></h4>
                        <input type="text" name="quantity" value="1" class="form-control" />
                        <input type="hidden" name="hidden_name" value="<?php echo $row["name"];?>" />
                        <input type="hidden" name="hidden_price" value="<?php echo $row["price"];?>" />
                        <input type="submit" name="add_to_cart" style="margin-top:5px;" class="submitBtn" class="btn btn-success" value="Add to Cart" /></div>
                </form>
            </div><?php
                    }
                }
            ?><div style="clear:both"></div>
            <br />
            <h3>Order Details</h3>
            <div class="table-responsive" >
                <table>
                    <tr>
                        <th width="40%" align="left">Item Name</th>
                        <th width="10%" align="left">Quantity</th>
                        <th width="20%" align="left">Price</th>
                        <th width="15%" align="left">Total</th>
                        <th width="5%" align="left">Action</th>
                    </tr><?php if(!empty($_SESSION["shopping_cart"])) { $total = 0; foreach($_SESSION["shopping_cart"] as $keys => $values){?><tr>
                        <td><?php echo $values["item_name"];?></td>
                        <td><?php echo $values["item_quantity"];?></td>
                        <td>&euro;<?php echo $values["item_price"];?></td>
                        <td>&euro;<?php echo number_format($values["item_quantity"] * $values["item_price"], 2);?></td>
                        <td><a href="ShoppingCart.php?action=delete&id=<?php echo $values["item_id"];?>"><span class="text-danger">Remove</span></a></td>
                    </tr><?php $total = $total + ($values["item_quantity"] * $values["item_price"]);}?><tr>
                        <td colspan="3" align="right">Total</td>
                        <td align="right">&euro;<?php echo number_format($total, 2); ?></td>
                        <td></td>
                    </tr><?php $cookie_name="Total"; setcookie($cookie_name, $total, time()+(86400*30),"/");}?></table></div>
            <input type="button" class="submitFormBtn" name="submit" value= "Submit" onclick="window.open ('success.php','_self',false)" /><br />
        </div>
    </div>
    <br />
    </body>
</html>
警告:无法修改标题信息-标题已由第169行/home/cabox/workspace/Project/ShoppingCart.php中的/home/cabox/workspace/Project/ShoppingCart.php发送(输出开始于/home/cabox/workspace/Project/ShoppingCart.php:134)

代码

<?php 
session_start();
$connect = mysqli_connect("localhost", "root", "", "lab"); //connect to the db

if(isset($_POST["add_to_cart"])) //if the add to cart value is set
{
    if(isset($_SESSION["shopping_cart"])) //if the shopping cart session is set
    {
        $item_array_id = array_column($_SESSION["shopping_cart"], "item_id"); 
        //if there are values in your shopping cart loop through and display them
        if(!in_array($_GET["id"], $item_array_id))
        {
            $count = count($_SESSION["shopping_cart"]);
            $item_array = array(
                'item_id'           =>  $_GET["id"],
                'item_name'         =>  $_POST["hidden_name"],
                'item_price'        =>  $_POST["hidden_price"],
                'item_quantity'     =>  $_POST["quantity"]
            );
            $_SESSION["shopping_cart"][$count] = $item_array;
        }
        else
        {
            echo '<script>alert("Item Already Added")</script>'; 
            //restriction on design - can only add one instance of each product, delete if you want to add more
        }
    }
    else
    {
        $item_array = array(
            'item_id'           =>  $_GET["id"],
            'item_name'         =>  $_POST["hidden_name"],
            'item_price'        =>  $_POST["hidden_price"],
            'item_quantity'     =>  $_POST["quantity"]
        );
        $_SESSION["shopping_cart"][0] = $item_array;
    }
}

if(isset($_GET["action"]))
{
    if($_GET["action"] == "delete") 
        //when you select 'Remove', delete the values based on id. Alert box will show on completition
    {
        foreach($_SESSION["shopping_cart"] as $keys => $values)
        {
            if($values["item_id"] == $_GET["id"])
            {
                unset($_SESSION["shopping_cart"][$keys]);
                echo '<script>alert("Item has been removed from Shopping Cart")</script>';
                echo '<script>window.location="ShoppingCart.php"</script>';
            }
        }
    }
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Shopping Cart</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
        <!-- AJAX is about loading data in the background and display it on the webpage, without reloading the whole page.-->
    <link rel="stylesheet" type="text/css" href="thePerfectPair.css" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

    <script>
                // Get the modal
                var modal = document.getElementById('id01');

                // When the user clicks anywhere outside of the modal, close it
                window.onclick = function(event) {
                    if (event.target == modal) {
                        modal.style.display = "none";
                    }
                }
    </script> 
    </head>
    <body>
        <nav class="navigationBar">
        <!--Establishing the top left hand side of the Navigation Bar-->
        <div class="leftTopNavBar">
            &euro; EUR |
            <!--The following produces a pop up sign up form that is validated through javascript functions in the following code.
            I implemented this pop up form to create a different design element as opposed to just referring users to another page.
            All design element are assigned in the css file and it involved calling many different classes in order not to conflict
            with other forms and input boxes contained in the website-->
    <button onclick="document.getElementById('id01').style.display='block'" style="width:auto;" class="SignUpBtn0">SIGN UP |</button>
    <div id="id01" class="modal">
      <span onclick="document.getElementById('id01').style.display='none'" class="close" title="Close Modal">&times;</span>
        <form class="modal-content" action="/action_page.php">
          <div class="container1">
            <h1>Sign Up</h1>
            <p>Please fill in this form to create an account with Perfect Pair!</p>
            <hr>
            <b>Email</b>
            <input type="text" placeholder="Enter Email" name="email" required>
            <b>Password</b>
            <input type="password" placeholder="Enter Password" name="psw" required>
            <b>Repeat Password</b>
            <input type="password" placeholder="Repeat Password" name="psw-repeat" required>
            <label>
                <input type="checkbox" checked="checked" name="remember" style="margin-bottom:15px"> Remember me</label>
            <p>By creating an account you agree to our <a href="#" style="color:dodgerblue">Terms &amp; Privacy</a>.</p>
            <div class="clearfix">
                <button type="button" onclick="document.getElementById('id01').style.display='none'" class="cancelbtn">Cancel</button>
                <button type="submit" class="signupbtn">Sign Up</button>
                </div>
            </div>
        </form>
    </div>
            SAVED ITEMS
        </div>
        <!--Establishing the right side of the navBar-->
        <div class="rightTopNavBar">
            <input type="search" placeholder="Search..." name="search">
            <button type="submit"><i class="fa fa-search"></i></button>
            <a href="LogIn.php">LOGIN |</a> CART
            <i class="fa fa-shopping-cart" style="font-size:20px"></i>
        </div>
        <!--Establishing the middle of the navBar-->
        <div class="middleTopNavBar">
            <a href="ShoeHomePage.php"><img src="Images/perfectPairLogo.png" class="logoHeader" alt="logo" width="100" height="100"></a>
        </div>
        <!--Establishing bottom navBar-->
        <div class="bottomNavBar">
      <a href="ShoeHomePage.php" style="text-decoration:none"> <i class="fa fa-home" style="font-size:36px">&emsp;</i></a>
      <a href="Heels.php" style="text-decoration:none">&emsp;HEELS&emsp;</a>
      <a href="Sandals.php" style="text-decoration:none">&emsp;SANDALS&emsp;</a>
      <a href="Boots.php" style="text-decoration:none">&emsp;BOOTS&emsp;</a>
      <a href="Trainers.php" style="text-decoration:none">&emsp;TRAINERS&emsp;</a>
      <a href="Flats.php" style="text-decoration:none">&emsp;FLATS&emsp;</a>
      <a href="ShoppingCart.php" style="text-decoration:none">&emsp;SHOPPING CART&emsp;</a></div></nav>
        <div class="container">
            <br><?php $query="SELECT*FROM tbl_product1 ORDER BY id ASC"; $result=mysqli_query($connect, $query); if(mysqli_num_rows($result)>0){while($row=mysqli_fetch_array($result)){?><div class="col-md-4">
<form method="post" class="phpForm" action="ShoppingCart.php?action=add&id=<?php echo $row["id"];?>" >
                    <div class="formStyleDiv" style=" background-color:#f1f1f1; border-radius:1px; padding:16px; width:25%;" align="center">
                        <img src="Images/<?php echo $row["image"];?>" class="img-responsive" style="height: 200px;" />
                        <h4 class="text-info"><?php echo $row["name"];?></h4><br />
                        <h4 class="text-danger">&euro;<?php echo $row["price"];?></h4>
                        <input type="text" name="quantity" value="1" class="form-control" />
                        <input type="hidden" name="hidden_name" value="<?php echo $row["name"];?>" />
                        <input type="hidden" name="hidden_price" value="<?php echo $row["price"];?>" />
                        <input type="submit" name="add_to_cart" style="margin-top:5px;" class="submitBtn" class="btn btn-success" value="Add to Cart" /></div>
                </form>
            </div><?php
                    }
                }
            ?><div style="clear:both"></div>
            <br />
            <h3>Order Details</h3>
            <div class="table-responsive" >
                <table>
                    <tr>
                        <th width="40%" align="left">Item Name</th>
                        <th width="10%" align="left">Quantity</th>
                        <th width="20%" align="left">Price</th>
                        <th width="15%" align="left">Total</th>
                        <th width="5%" align="left">Action</th>
                    </tr><?php if(!empty($_SESSION["shopping_cart"])) { $total = 0; foreach($_SESSION["shopping_cart"] as $keys => $values){?><tr>
                        <td><?php echo $values["item_name"];?></td>
                        <td><?php echo $values["item_quantity"];?></td>
                        <td>&euro;<?php echo $values["item_price"];?></td>
                        <td>&euro;<?php echo number_format($values["item_quantity"] * $values["item_price"], 2);?></td>
                        <td><a href="ShoppingCart.php?action=delete&id=<?php echo $values["item_id"];?>"><span class="text-danger">Remove</span></a></td>
                    </tr><?php $total = $total + ($values["item_quantity"] * $values["item_price"]);}?><tr>
                        <td colspan="3" align="right">Total</td>
                        <td align="right">&euro;<?php echo number_format($total, 2); ?></td>
                        <td></td>
                    </tr><?php $cookie_name="Total"; setcookie($cookie_name, $total, time()+(86400*30),"/");}?></table></div>
            <input type="button" class="submitFormBtn" name="submit" value= "Submit" onclick="window.open ('success.php','_self',false)" /><br />
        </div>
    </div>
    <br />
    </body>
</html>

错误消息告诉您“输出开始于/home/cabox/workspace/Project/ShoppingCart.php:134”。这一行看起来像什么?可能与@GregSchmidt第134行重复:似乎最后一行,即您试图设置cookie的那一行,将是第169行?在开始发送输出之前,需要设置cookie。因此,要么重新组织代码,以便您计算总数并在开始时创建cookie,要么就开始创建cookie在一个字符串中的所有输出(例如,使用herdeoc或
ob.*
函数),您仍然可以在代码末尾设置cookie,然后一次性输出所有字符串。