我想制作一个添加主题页面,我使用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); ?>
答案 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.(必读)