2

可能重复:
PHP 已发送的标头

错误:

Warning: Cannot modify header information - headers already sent by (output started at functions.php:37) in functions.php on line 207

添加.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
}
?>

以前有效,现在无效,不太清楚为什么。

4

3 回答 3

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(); 
于 2012-10-20T02:42:18.383 回答
0

这是因为您已经向标准输出输出了一些内容。看看你的代码。如果您没有明确地这样做,则可能是您的代码执行中存在错误(例如 MySQL 连接错误),并且display_errorsOn在调用php.ini之前编写了错误消息。header

此外,如果您的 PHP 代码的编码发生了变化,则 BOM 字符可能已添加到您的代码中,这是在您发送标头之前非自愿但非常真实的输出。

可能导致问题的另一件事是关闭打开的?><?php标签可能会在 PHP 块之间的代码中留下空格(甚至其他字符),从而通过 HTTP 向浏览器发送不必要的输出,从而导致问题。

于 2012-10-20T02:42:42.503 回答
0

看起来你之前有输出缓冲,因为你在尝试重定向之前肯定有输出。

于 2012-10-20T02:48:12.130 回答