在php中的操作页面中的标题

时间:2014-07-26 08:42:15

标签: php header

我想制作一个添加主题页面,我使用action =“create_subject.php”,您可以在下面看到,并添加主题但是有错误并且没有返回到我的页面,请你帮我, 错误:“ 警告:无法修改标头信息 - 已在第19行的/Applications/MAMP/htdocs/cmsfunction/create_subject.php中发送的(已从/Applications/MAMP/htdocs/cmsfunction/create_subject.php:2开始输出的标头)

操作页面代码:

// there is no problem with inclide and require pages .
<?php include_once("includes/connections.php"); ?>
<?php require_once("includes/function.php"); ?>
<?php

    $menu_name = $_POST['menu_name'];
    $visible = $_POST['visible'];
    $position = $_POST['position'];
?>
<?php
    $query = "INSERT INTO subjects (
                menu_name, visible, position
            ) VALUES (
            '{$menu_name}' , {$visible}, {$position}
            )";
        if (mysqli_query($connection, $query)){
            //success!

            header('Location: content.php');
            exit;
        }else {
            // Display error message.
            echo "<p> Subject creation failed.</p>";
            echo "<p>" . mysqli_error() . "<p>";
        }
?>

<?php mysqli_close($connection); ?>

2 个答案:

答案 0 :(得分:0)

你可能在某个地方有一个尾随空间......我建议你只在文件顶部使用一个php标签,而不是打开和关闭许多...因为空格和换行符实际存储在你的标签之间。

您还需要检查您的包含,并且您只能打开一个php标记,并且永远不会在包含的文件中关闭它,因此不会添加额外的字符。

答案 1 :(得分:0)

您遇到的问题是在设置标题之前输出内容。

?>
<?php

这实际上是:

?>\n
<?php

\n是内容,虽然没有看到它仍然是字节。您可以多次在代码中执行此操作。

您只需要删除PHP的突破,所以:

<?php 
include_once("includes/connections.php");
require_once("includes/function.php");

$menu_name = isset($_POST['menu_name']) ? mysqli_real_escape_string($_POST['menu_name']) : null;
$visible = isset($_POST['visible']) ? mysqli_real_escape_string($_POST['visible']) : null;
$position = isset($_POST['position']) ? mysqli_real_escape_string($_POST['position']) : null;

$query = "INSERT INTO subjects (
                menu_name, visible, position
          ) VALUES (
            '".$menu_name."' , ".$visible.", ".$position."
          )";

if (mysqli_query($connection, $query)){
    //success!
    header('Location: content.php');
    exit;
}else {
    // Display error message.
    echo "<p> Subject creation failed.</p>";
    echo "<p>" . mysqli_error() . "<p>";
}
mysqli_close($connection); 
?>

此外,请在使用前检查输入,并始终在查询参数上使用mysqli_real_escape_string(),否则例如Projects's的menu_name值将破坏您的查询。 More on SQL injection prevention here.(必读)