1

嘿,我正在通过 lynda.com 的一些教程学习 PHP。在本教程中,我们正在制作一个 CMS。我按照教程中的步骤进行操作,甚至从 lynda.com 获得了文件,并且完全一样,但是在教程中它可以工作,当我这样做时,标题位置不起作用。

<?php require_once("includes/connection.php"); ?>
<?php require_once("includes/functions.php"); ?>
<?php error_reporting(E_ALL); ini_set('display_errors', 'On'); ?>

<?php
$menu_name = $_POST['menu_name'];
$position = $_POST['position'];
$visible = $_POST['visible'];
?>
<?php
$query = "INSERT INTO subjects (
            menu_name, position, visible
        ) VALUES (
            '{$menu_name}', {$position}, {$visible}
        )";
$result = mysql_query($query, $connection);
if ($result) {
    // Success!
    header("location:content.php");
    exit;
} else {
    // Display error message.
    echo "<p>Subject creation failed.</p>";
    echo "<p>" . mysql_error() . "</p>";
}
?>

<?php mysql_close($connection); ?>

我得到的错误如下

Warning: Cannot modify header information - headers already sent by (output started at      /Applications/MAMP/htdocs/Widgetcorp/create_subject.php:5) in /Applications/MAMP/htdocs/Widgetcorp/create_subject.php on line 19
4

4 回答 4

3

以这种方式编写代码

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 'On');

require_once("includes/connection.php");
require_once("includes/functions.php");

$menu_name = $_POST['menu_name'];
...

没有所有这些不必要的打开/关闭 PHP 标记。

请注意,错误消息中明确指出第 5 行是一个原因。始终阅读错误消息。他们很有帮助。

于 2013-08-20T11:01:08.697 回答
1

这是因为您已经在脚本中进行了一些输出。尝试在脚本中使用单个打开/关闭 php 标签对 - 在开始和结束时。

并使用正确的重定向标头语法:

header('Location: http://www.example.com/');

大写的位置,后面的空格

于 2013-08-20T11:02:09.300 回答
0

以下行之间有空格。删除它,这样它可能会起作用

<?php error_reporting(E_ALL); ini_set('display_errors', 'On'); ?>

<?php
于 2013-08-20T11:00:06.303 回答
0

在您使用“require_once()”调用的脚本之一中,您可能有一些“回声”调用(或其他打印文本的函数)。

这里来自 PHP Doc 的文本:

请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是从 PHP 发送。使用 include 或 require 函数或其他文件访问函数读取代码并在调用 header() 之前输出空格或空行是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。

于 2013-08-20T11:05:00.137 回答