标题位置不起作用

时间:2013-08-20 10:57:41

标签: php header content-management-system location

嘿,我正在通过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 个答案:

答案 0 :(得分: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行在错误消息中明确指出作为原因。始终读取错误消息。他们很有帮助。

答案 1 :(得分:1)

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

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

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

之后的大写位置,空格

答案 2 :(得分:0)

以下行之间有空格。删除它以便它可能正常工作

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

<?php

答案 3 :(得分:0)

你可以在一个用“require_once()”调用的脚本中有一些“echo”调用(或其他打印文本的函数)。

这里是PHP Doc的文本:

  

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