错误:
Warning: Cannot modify header information - headers already sent by (output started at functions.php:37) in functions.php on line 207
add.php
<?php include('functions.php'); ?>
<?php global_header("Add"); ?>
<?php page_navigation(); ?>
<?php
// If no form has been submitted, present form
if (empty($_POST))
{
add_form();
}
// if a form has been submitted
else
{
// if form_validity() == 1, proceed to connect
if (form_validity() == 1)
{
// connect to mysql + database
connect();
// get values from form, insert into database
$saleItemCheck = isset($_POST['saleItem'])?"y":"n";
$discItemCheck = isset($_POST['discountedItem'])?"y":"n";
$sql=("INSERT INTO inventory (name, manufac, model, descrip, onhand, reorder, cost, price, sale, discont, deleted)
VALUES ('$_POST[itemName]', '$_POST[manufacturer]', '$_POST[model]', '$_POST[description]', '$_POST[numberOnHand]',
'$_POST[reorderLevel]', '$_POST[cost]','$_POST[sellingPrice]',
'$saleItemCheck', '$discItemCheck', 'n')");
// if the query doesn't work, display error message
if (!(mysql_query($sql))) { die ("could not query: " . mysql_error()); }
add_form();
redirect("view.php");
}
else
{
// if form is not valid (form_validity returns 0), display error messages
add_form();
}
}
?>
<?php page_footer(); ?>
我的重定向功能
<?php
function redirect($page)
{
header('Location:'.$page); <------------------------------------ line 207
}?>
标题功能
<?php
function global_header($page_title)
{
$content = '<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DIMAS OLYMPIC WEIGHTLIFTING EQUIPMENT - ' . $page_title . '</title>
<meta name="description" content="BTI320 Assignment 1">
<meta name="author" content="Marcel Olszewski - 078-681-103">
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div id="container">
<div><img src="logo.png" id="logo" alt="I (Marcel Olszewski) created this in photoshop" /></div>';
echo $content; <------------------- LINE 37
}
?>
以前工作过,现在不行,不太确定原因。
答案 0 :(得分:1)
您无需关闭并重新打开PHP标记 - 这个:
}
}
?>
<?php page_footer(); ?>
可以转换为:
}
}
page_footer();
您甚至不需要关闭PHP标记。通过关闭标记,您将面临在结束标记之后留下空白的风险,该标记将被回显到浏览器并将导致您遇到的问题。 通常,如果PHP标记位于文件末尾,则无需关闭它们。
编辑:这是你的问题:
变化:
<?php include('functions.php'); ?>
<?php global_header("Add"); ?>
<?php page_navigation(); ?>
<?php
为:
<?php include('functions.php');
global_header("Add");
page_navigation();
答案 1 :(得分:0)
这是因为你已经向stdout输出了一些东西。看看你的代码。如果您没有明确地这样做,可能是您的代码执行中存在错误(例如,MySQL连接错误),display_errors
On
为php.ini
在header
来电之前写入错误消息。
此外,如果您的PHP代码的编码发生了变化,那么在您发送标题之前,您的代码可能已经添加了BOM字符,这是一种非自愿但非常实际的输出。
可能导致此问题的另一件事是,使用close-open ?><?php
标记可能会在PHP块之间的代码中留下空格(甚至其他字符),从而通过HTTP向浏览器发送不必要的输出,导致问题。
答案 2 :(得分:0)
它看起来你之前有输出缓冲因为你在尝试重定向之前肯定有输出。