PHP警告:无法修改header信息需要报错解决
PHP Warning: Cannot modify header information need error solving
我是新手 PHP,我正在尝试制作一个 Web 应用程序,我可以在其中创建销售项目并修改它们 ECC ECC。是一种仓库管理软件。
下面的代码是插入新销售项目的表单。
第二个代码是我表单中的代码调用的函数,用于将销售项目数据插入数据库。
我的代码有错误,但我不明白。
这是我的页面表单:
<?php
require('includes\dbconn.php');
require('includes\dbfunction.php');
session_start();
if(isset($_SESSION["username"])){
?>
<!DOCTYPE html>
<html>
<title>W3.CSS Template</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">
<style>
html,body,h1,h2,h3,h4,h5 {font-family: "Raleway", sans-serif}
</style>
<body class="w3-light-grey">
<!-- Top container -->
<div class="w3-bar w3-top w3-black w3-large" style="z-index:4">
<button class="w3-bar-item w3-button w3-hide-large w3-hover-none w3-hover-text-light-grey" onclick="w3_open();"><i class="fa fa-bars"></i> Menu</button>
<span class="w3-bar-item w3-right">BK2 Gestionale</span>
</div>
<!-- Sidebar/menu -->
<nav class="w3-sidebar w3-collapse w3-white" style="z-index:3;width:300px;" id="mySidebar"><br>
<div class="w3-container w3-row">
<div class="w3-col s12 w3-bar w3-center">
<?php
if(isset($_SESSION["username"])){
echo "<p>Benvenuto " . $_SESSION["username"] . "</p>";
?>
<a href="#" class="w3-bar-item w3-button"><i class="fa fa-user"></i></a>
<a href="impostazioni.php" class="w3-bar-item w3-button"><i class="fa fa-cog"></i></a>
<a href="logout.php" class="w3-bar-item w3-button"><i class="fas fa-sign-in-alt"></i></a>
<?php
}
else{
header( "refresh:3;url=index.php" );
}
?>
</div>
</div>
<hr>
<div class="w3-container">
<h5>Dashboard</h5>
</div>
<div class="w3-bar-block">
<a href="#" class="w3-bar-item w3-button w3-padding-16 w3-hide-large w3-dark-grey w3-hover-black" onclick="w3_close()" title="close menu"><i class="fa fa-remove fa-fw"></i> Close Menu</a>
<a href="index.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-home"></i> Home</a>
<?php
if(isset($_SESSION["username"])){
?>
<a href="statistiche.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-chart-area"></i> Statistiche</a>
<a href="magazzino.php" class="w3-bar-item w3-button w3-padding w3-blue"><i class="fas fa-warehouse"></i> Magazzino</a>
<a href="contabilita.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-file-invoice-dollar"></i> Contabilità</a>
<a href="fornitori.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-parachute-box"></i> Fornitori</a>
<a href="clienti.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-users"></i> Clienti</a>
<a href="dipendenti.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-people-carry"></i> Dipendenti</a>
<a href="storico.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-history"></i> Storico</a>
<a href="impostazioni.php" class="w3-bar-item w3-button w3-padding"><i class="fa fa-cog fa-fw"></i> Impostazioni</a><br><br>
<?php
}
else{
}
?>
</div>
</nav>
<!-- Overlay effect when opening sidebar on small screens -->
<div class="w3-overlay w3-hide-large w3-animate-opacity" onclick="w3_close()" style="cursor:pointer" title="close side menu" id="myOverlay"></div>
<!-- !PAGE CONTENT! -->
<div class="w3-main" style="margin-left:300px;margin-top:43px;">
<div class="w3-container">
<div class="w3-row">
<div class="w3-col s12 l3">
<br>
</div>
<div class="w3-col s12 l5">
<form class="w3-container" action="nuovoarticolo.php" method="post">
<label class="w3-text-blue"><b>Descrizione articolo:</b></label>
<input class="w3-input w3-border" name="nomearticolo" type="text" required><br>
<label class="w3-text-blue"><b>Codice articolo:</b></label>
<input class="w3-input w3-border" name="codicearticolo" type="text" required><br>
<label class="w3-text-blue"><b>Barcode:</b></label>
<input class="w3-input w3-border" name="barcode" type="text" required><br>
<label class="w3-text-blue"><b>Prezzo acquisto:</b></label>
<input class="w3-input w3-border" name="prezzoAcquisto" type="text" required><br>
<label class="w3-text-blue"><b>Prezzo vendita:</b></label>
<input class="w3-input w3-border" name="prezzoVendita" type="text" required><br>
<label class="w3-text-blue"><b>Quantità:</b></label>
<input class="w3-input w3-border" name="quantita" type="text" required><br>
<label class="w3-text-blue"><b>Sconto %:</b></label>
<input class="w3-input w3-border" name="scontoPercentuale" type="text" required><br>
<button class="w3-btn w3-blue" type="submit">CREA ARTICOLO</button>
</form>
<?php
if(isset($_POST["nomearticolo"]) && isset($_POST["codicearticolo"]) && isset($_POST["barcode"])
&& isset($_POST["prezzoAcquisto"]) && isset($_POST["prezzoVendita"]) && isset($_POST["quantita"])
&& isset($_POST["scontoPercentuale"])){
$nomeArticolo = $_POST["nomearticolo"];
$codiceArticolo = $_POST["codicearticolo"];
$barcodeArticolo = $_POST["barcode"];
$prezzoAcquistoArticolo = $_POST["prezzoAcquisto"];
$prezzoVenditaArticolo = $_POST["prezzoVendita"];
$quantitaArticolo = $_POST["quantita"];
$scontoPercentualeArticolo = $_POST["scontoPercentuale"];
creaNuovoArticolo($nomeArticolo, $codiceArticolo, $barcodeArticolo, $prezzoAcquistoArticolo, $prezzoVenditaArticolo, $quantitaArticolo, $scontoPercentualeArticolo);
}
?>
</div>
<div class="w3-col s12 l3">
<br>
</div>
</div>
</div>
</div>
<script>
// Get the Sidebar
var mySidebar = document.getElementById("mySidebar");
// Get the DIV with overlay effect
var overlayBg = document.getElementById("myOverlay");
// Toggle between showing and hiding the sidebar, and add overlay effect
function w3_open() {
if (mySidebar.style.display === 'block') {
mySidebar.style.display = 'none';
overlayBg.style.display = "none";
} else {
mySidebar.style.display = 'block';
overlayBg.style.display = "block";
}
}
// Close the sidebar with the close button
function w3_close() {
mySidebar.style.display = "none";
overlayBg.style.display = "none";
}
</script>
</body>
</html>
<?php
}
else{
header("location: accessonegato.php");
}
?>
这是我在另一个文件上的函数代码:
function creaNuovoArticolo($nomeArticolo, $codiceArticolo, $barcodeArticolo, $prezzoAcquistoArticolo, $prezzoVenditaArticolo, $quantitaArticolo, $scontoPercentualeArticolo){
require('dbconn.php');
$sql = "INSERT INTO articoli (nomeArticolo, codiceArticolo, barcode, prezzoAcquisto, prezzoVendita, quantita, scontoPercentuale) VALUES('$nomeArticolo', '$codiceArticolo', '$barcodeArticolo', '$prezzoAcquistoArticolo', '$prezzoVenditaArticolo', '$quantitaArticolo', '$scontoPercentualeArticolo')";
if ($conn->query($sql) === TRUE) {
header('Location: articolocreato.php');
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
当我在我的表单中插入记录并单击按钮时,出现此错误:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\bk2\nuovoarticolo.php:69) in C:\xampp\htdocs\bk2\includes\dbfunction.php on line 42
我不明白如何解决这个问题。
如果有人可以检查我的代码并告诉我我的错误,我将不胜感激。
抱歉我的英语不好! ;)
您的问题与How to fix "Headers already sent" error in PHP密切相关。
如果在调用 header()
之前有任何输出发生,就会出现错误。
此输出可能是 HTML mark-up 或您的 PHP 的其他输出,它甚至可能是 [=24= 开头的空白 space ] 文件或代码编辑器添加的字节顺序标记。
您需要将与 headers 相关的所有逻辑移动到代码的开头或使用 PHP 输出缓冲 - 有关缓冲讨论,请参阅 What is output buffering?。
我是新手 PHP,我正在尝试制作一个 Web 应用程序,我可以在其中创建销售项目并修改它们 ECC ECC。是一种仓库管理软件。
下面的代码是插入新销售项目的表单。
第二个代码是我表单中的代码调用的函数,用于将销售项目数据插入数据库。
我的代码有错误,但我不明白。
这是我的页面表单:
<?php
require('includes\dbconn.php');
require('includes\dbfunction.php');
session_start();
if(isset($_SESSION["username"])){
?>
<!DOCTYPE html>
<html>
<title>W3.CSS Template</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">
<style>
html,body,h1,h2,h3,h4,h5 {font-family: "Raleway", sans-serif}
</style>
<body class="w3-light-grey">
<!-- Top container -->
<div class="w3-bar w3-top w3-black w3-large" style="z-index:4">
<button class="w3-bar-item w3-button w3-hide-large w3-hover-none w3-hover-text-light-grey" onclick="w3_open();"><i class="fa fa-bars"></i> Menu</button>
<span class="w3-bar-item w3-right">BK2 Gestionale</span>
</div>
<!-- Sidebar/menu -->
<nav class="w3-sidebar w3-collapse w3-white" style="z-index:3;width:300px;" id="mySidebar"><br>
<div class="w3-container w3-row">
<div class="w3-col s12 w3-bar w3-center">
<?php
if(isset($_SESSION["username"])){
echo "<p>Benvenuto " . $_SESSION["username"] . "</p>";
?>
<a href="#" class="w3-bar-item w3-button"><i class="fa fa-user"></i></a>
<a href="impostazioni.php" class="w3-bar-item w3-button"><i class="fa fa-cog"></i></a>
<a href="logout.php" class="w3-bar-item w3-button"><i class="fas fa-sign-in-alt"></i></a>
<?php
}
else{
header( "refresh:3;url=index.php" );
}
?>
</div>
</div>
<hr>
<div class="w3-container">
<h5>Dashboard</h5>
</div>
<div class="w3-bar-block">
<a href="#" class="w3-bar-item w3-button w3-padding-16 w3-hide-large w3-dark-grey w3-hover-black" onclick="w3_close()" title="close menu"><i class="fa fa-remove fa-fw"></i> Close Menu</a>
<a href="index.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-home"></i> Home</a>
<?php
if(isset($_SESSION["username"])){
?>
<a href="statistiche.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-chart-area"></i> Statistiche</a>
<a href="magazzino.php" class="w3-bar-item w3-button w3-padding w3-blue"><i class="fas fa-warehouse"></i> Magazzino</a>
<a href="contabilita.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-file-invoice-dollar"></i> Contabilità</a>
<a href="fornitori.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-parachute-box"></i> Fornitori</a>
<a href="clienti.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-users"></i> Clienti</a>
<a href="dipendenti.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-people-carry"></i> Dipendenti</a>
<a href="storico.php" class="w3-bar-item w3-button w3-padding"><i class="fas fa-history"></i> Storico</a>
<a href="impostazioni.php" class="w3-bar-item w3-button w3-padding"><i class="fa fa-cog fa-fw"></i> Impostazioni</a><br><br>
<?php
}
else{
}
?>
</div>
</nav>
<!-- Overlay effect when opening sidebar on small screens -->
<div class="w3-overlay w3-hide-large w3-animate-opacity" onclick="w3_close()" style="cursor:pointer" title="close side menu" id="myOverlay"></div>
<!-- !PAGE CONTENT! -->
<div class="w3-main" style="margin-left:300px;margin-top:43px;">
<div class="w3-container">
<div class="w3-row">
<div class="w3-col s12 l3">
<br>
</div>
<div class="w3-col s12 l5">
<form class="w3-container" action="nuovoarticolo.php" method="post">
<label class="w3-text-blue"><b>Descrizione articolo:</b></label>
<input class="w3-input w3-border" name="nomearticolo" type="text" required><br>
<label class="w3-text-blue"><b>Codice articolo:</b></label>
<input class="w3-input w3-border" name="codicearticolo" type="text" required><br>
<label class="w3-text-blue"><b>Barcode:</b></label>
<input class="w3-input w3-border" name="barcode" type="text" required><br>
<label class="w3-text-blue"><b>Prezzo acquisto:</b></label>
<input class="w3-input w3-border" name="prezzoAcquisto" type="text" required><br>
<label class="w3-text-blue"><b>Prezzo vendita:</b></label>
<input class="w3-input w3-border" name="prezzoVendita" type="text" required><br>
<label class="w3-text-blue"><b>Quantità:</b></label>
<input class="w3-input w3-border" name="quantita" type="text" required><br>
<label class="w3-text-blue"><b>Sconto %:</b></label>
<input class="w3-input w3-border" name="scontoPercentuale" type="text" required><br>
<button class="w3-btn w3-blue" type="submit">CREA ARTICOLO</button>
</form>
<?php
if(isset($_POST["nomearticolo"]) && isset($_POST["codicearticolo"]) && isset($_POST["barcode"])
&& isset($_POST["prezzoAcquisto"]) && isset($_POST["prezzoVendita"]) && isset($_POST["quantita"])
&& isset($_POST["scontoPercentuale"])){
$nomeArticolo = $_POST["nomearticolo"];
$codiceArticolo = $_POST["codicearticolo"];
$barcodeArticolo = $_POST["barcode"];
$prezzoAcquistoArticolo = $_POST["prezzoAcquisto"];
$prezzoVenditaArticolo = $_POST["prezzoVendita"];
$quantitaArticolo = $_POST["quantita"];
$scontoPercentualeArticolo = $_POST["scontoPercentuale"];
creaNuovoArticolo($nomeArticolo, $codiceArticolo, $barcodeArticolo, $prezzoAcquistoArticolo, $prezzoVenditaArticolo, $quantitaArticolo, $scontoPercentualeArticolo);
}
?>
</div>
<div class="w3-col s12 l3">
<br>
</div>
</div>
</div>
</div>
<script>
// Get the Sidebar
var mySidebar = document.getElementById("mySidebar");
// Get the DIV with overlay effect
var overlayBg = document.getElementById("myOverlay");
// Toggle between showing and hiding the sidebar, and add overlay effect
function w3_open() {
if (mySidebar.style.display === 'block') {
mySidebar.style.display = 'none';
overlayBg.style.display = "none";
} else {
mySidebar.style.display = 'block';
overlayBg.style.display = "block";
}
}
// Close the sidebar with the close button
function w3_close() {
mySidebar.style.display = "none";
overlayBg.style.display = "none";
}
</script>
</body>
</html>
<?php
}
else{
header("location: accessonegato.php");
}
?>
这是我在另一个文件上的函数代码:
function creaNuovoArticolo($nomeArticolo, $codiceArticolo, $barcodeArticolo, $prezzoAcquistoArticolo, $prezzoVenditaArticolo, $quantitaArticolo, $scontoPercentualeArticolo){
require('dbconn.php');
$sql = "INSERT INTO articoli (nomeArticolo, codiceArticolo, barcode, prezzoAcquisto, prezzoVendita, quantita, scontoPercentuale) VALUES('$nomeArticolo', '$codiceArticolo', '$barcodeArticolo', '$prezzoAcquistoArticolo', '$prezzoVenditaArticolo', '$quantitaArticolo', '$scontoPercentualeArticolo')";
if ($conn->query($sql) === TRUE) {
header('Location: articolocreato.php');
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
当我在我的表单中插入记录并单击按钮时,出现此错误:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\bk2\nuovoarticolo.php:69) in C:\xampp\htdocs\bk2\includes\dbfunction.php on line 42
我不明白如何解决这个问题。 如果有人可以检查我的代码并告诉我我的错误,我将不胜感激。
抱歉我的英语不好! ;)
您的问题与How to fix "Headers already sent" error in PHP密切相关。
如果在调用 header()
之前有任何输出发生,就会出现错误。
此输出可能是 HTML mark-up 或您的 PHP 的其他输出,它甚至可能是 [=24= 开头的空白 space ] 文件或代码编辑器添加的字节顺序标记。
您需要将与 headers 相关的所有逻辑移动到代码的开头或使用 PHP 输出缓冲 - 有关缓冲讨论,请参阅 What is output buffering?。