我在关注YouTube教程时收到此警告,但无法找出原因:
警告:无法修改标头信息 - 已经发送的标头(输出从/Applications/XAMPP/xamppfiles/htdocs/storeadmin/inventory_list.php:23开始
这是代码:
<?php
session_start();
if(!isset($_SESSION["manager"])){
header("location: admin_login.php");
exit();
}
$managerID = preg_replace('#[^0-9]#i','',$_SESSION["id"]);//filter everything but numbers
$manager= preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["manager"]);
$password= preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["password"]);
include "../connect_to_mysql.php";//includes file to connect to db
$sql= mysql_query("SELECT * FROM admin WHERE id='$managerID' AND username='$manager' AND password='$password' LIMIT 1");
$existCount=mysql_num_rows($sql); //count row
if ($existCount == 0) {
echo "your login does not exist";
exit();
}
?>
<?php
error_reporting(E_ALL);//error report testing
ini_set('display_errors','1');
?>
<?php
// Delete Item Question to Admin, and Delete Product if they choose
if (isset($_GET['deleteid'])) {
echo 'Do you really want to delete product with ID of ' . $_GET['deleteid'] . '? <a href="inventory_list.php?yesdelete=' . $_GET['deleteid'] . '">Yes</a> | <a href="inventory_list.php">No</a>';
exit();
}
if (isset($_GET['yesdelete'])) {
// remove item from system and delete its picture
// delete from database
$id_to_delete = $_GET['yesdelete'];
$sql = mysql_query("DELETE FROM products WHERE id='$id_to_delete' LIMIT 1") or die (mysql_error());
// unlink the image from server
// Remove The Pic -------------------------------------------
$pictodelete = ("../inventory_images/$id_to_delete.jpg");
if (file_exists($pictodelete)) {
unlink($pictodelete);
}
header("location: inventory_list.php");
exit();
}
?>
<?php
//parse form data adds inventory item to database
if(isset($_POST['product_name'])){
$product_name = mysql_real_escape_string($_POST['product_name']);
$price = mysql_real_escape_string($_POST['price']);
$proddescription = mysql_real_escape_string($_POST['proddescription']);
$genre = mysql_real_escape_string($_POST['genre']);
$quantity = mysql_real_escape_string($_POST['quantity']);
//this checks if an item already exists under this name
$sql= mysql_query("SELECT id FROM products WHERE product_name='$product_name' LIMIT 1");
$productMatch = mysql_num_rows($sql);
if($productMatch > 0){
echo 'Sorry, this item already exists, <a href="inventory_list.php">click here</a>';
exit();
}
//add items to database
$sql = mysql_query("INSERT INTO products (product_name, price, proddescription, genre, quantity)
VALUES('$product_name','$price','$proddescription','$genre','$quantity')") or die (mysql_error());
$pid = mysql_insert_id();
// Place image in the folder
$newname = "$pid.jpg";
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$newname");
header("location: inventory_list.php");
exit();
}
?>
<?php
//this displays whole list
$product_list="";
$sql = mysql_query("SELECT * FROM products");
$productCount =mysql_num_rows($sql);
if($productCount>0){
while($row = mysql_fetch_array($sql)){
$id = $row["id"];
$product_name = $row["product_name"];
$price = $row["price"];
$quantity = $row["quantity"];
$product_list.="$id - $product_name - $quantity - $price <a href= 'inventory_edit.php?pid=$id'>edit</a> • <a href='inventory_list.php?deleteid=$id'>delete</a><br />";
}
} else {
$product_list = "There are no products in the store.";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
<title>Inventory List</title>
<link href="../style2.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="container">
<div id="masthead">
</div>
<div id="navigation">
<p><a href="index1.php">Home</a>
<a href="fiction.php">Fiction</a>
<a href="travel.php">Travel</a>
<a href="sport.php">Sport</a>
<a href="arts.php">Arts & Design</a>
<a href="cart.php">Shopping Cart</a>
<a href="account.php">Manage Account</a></p>
</div>
<div id="content">
<div align ="right" style="margin-right:32px;"><a href="inventory_list.php#inventoryForm">+ Add New Item</a></div>
<div align="left" style="margin-left:24px;">
</div>
<h4>Inventory List</h4>
<?php echo $product_list; ?>
<a name = "inventoryForm" id="inventoryForm"></a>
<h3>
↓ Add New Item Form ↓
</h3>
<form action="inventory_list.php" enctype="multipart/form-data" name="myForm" id="myForm" method="post">
<table width="90%" border="0" cellspacing="0" cellpadding="6">
<tr>
<td width="20%">Product Name</td>
<td width="80%"><label>
<input name="product_name" type="text" id="product_name" size="64" />
</label></td>
</tr>
<tr>
<td>Product Price</td>
<td><label>
£
<input name="price" type="text" id="price" size="12" />
</label></td>
</tr>
<tr>
<td>Description</td>
<td><label>
<input name="proddescription" type="text" id="proddescription" size="64" />
</label></td>
</tr>
<tr>
<td>Genre</td>
<td><label>
<select name="genre" id="genre" />
<option value=""></option>
<option value="Fiction">Fiction</option>
<option value="Travel">Travel</option>
<option value="Sport">Sport</option>
<option value="Arts & Design">Arts & Design</option>
</select>
</label></td>
</tr>
<tr>
<td>Product Image</td>
<td><label>
<input type="file" name="fileField" id="fileField" />
</label></td>
</tr>
<tr>
<td>Quantity</td>
<td><label>
<input name="quantity" type="text" id="quantity" size="4" />
</label></td>
</tr>
<tr>
<tr>
<td> </td>
<td><label>
<input type="submit" name="button" id="button" value="Add Item" />
</label></td>
</tr>
</table>
</form>
<br />
<br />
</div>
<div id="footer">
<p>ADMIN AREA</p>
</div>
</div>
</body>
</html>
答案 0 :(得分:0)
正如错误所示,您无法修改标头。因此,如果您使用header()
函数,请确保<?php ?>
标记之外没有空格或内容。并且不要在同一个脚本中两次发送相同的标头。您的代码中存在以下几个问题:
...
echo "your login does not exist";
exit();
}
?>
//here you have space and \n
<?php
合并所有PHP块。
答案 1 :(得分:0)
这发生在后面的一个header()
调用中。例如,在第三个<?php ?>
块中,它调用:
header("location: inventory_list.php");
每个<?php ?>
块之间有空行,因此计为原始HTML并在发生时立即发送到用户的浏览器(代码块外的第一行是第23行,这就是为什么它在错误中提到)。在发送数据之前,必须发送标头,因此此时您无法再更改它们。由于PHP块之间没有任何内容,只有空白行,您可以将它们合并在一起以修复它
答案 2 :(得分:0)
你在php标签之外有一个空行:
?>
<?php
这将导致php发送换行符。