标题位置不起作用

Posted

技术标签:

【中文标题】标题位置不起作用【英文标题】:Header location doesn't work 【发布时间】:2013-08-22 09:36:01 【问题描述】:

嘿,我正在通过 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

【问题讨论】:

你不应该在不同的 php 标签中分隔你的 php,因为你没有使用任何其他数据。一切都可以包装在 标记中。我认为标题错误来自两个标签之间的空行。 (第 4 行)- 参见:***.com/questions/8028957/headers-already-sent-by-php 【参考方案1】:

以这种方式编写代码

<?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 行作为原因。总是阅读错误信息。他们很有帮助。

【讨论】:

只是按照教程从本周开始学习 PHP :) 感谢解决。【参考方案2】:

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

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

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

位置从大写开始,空格

之后

【讨论】:

【参考方案3】:

以下行之间有空格。删除它,这样它就有可能工作

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

<?php

【讨论】:

【参考方案4】:

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

这里是来自 PHP Doc 的文本:

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

【讨论】:

以上是关于标题位置不起作用的主要内容,如果未能解决你的问题,请参考以下文章

QGraphicsSceneMouseEvent 获取位置将不起作用[重复]

标题位置不起作用

系统设备位置不起作用

为啥 jQuery.animate 位置不起作用?

Mongodb位置运算符不起作用

标头位置在 PHP 中不起作用 [重复]