Php 如何正确控制http状态代码?

Php 如何正确控制http状态代码?,php,http-status,Php,Http Status,在CodeIgniter中测试400错误处理时,我遇到了一件奇怪的事情 消息:无法修改标题信息-标题已由发送(输出开始于…) http状态码总是200,最后我发现 那么,如何在php中正确设置http状态代码,以确保它位于任何输出之前 在执行任何创建输出的操作(包括在 那么,如何在php中正确设置http状态代码,以确保它位于任何输出之前 在执行任何创建输出的操作(包括在之外放置空格字符)之前,请调用header()函数,然后再将任何内容返回给访问者 如果在调用header()之前无法确定返回内

在CodeIgniter中测试400错误处理时,我遇到了一件奇怪的事情

消息:无法修改标题信息-标题已由发送(输出开始于…)

http状态码总是200,最后我发现

那么,如何在php中正确设置http状态代码,以确保它位于任何输出之前

在执行任何创建输出的操作(包括在

那么,如何在php中正确设置http状态代码,以确保它位于任何输出之前

在执行任何创建输出的操作(包括在
之外放置空格字符)之前,请调用
header()
函数,然后再将任何内容返回给访问者

如果在调用
header()
之前无法确定返回内容的位置,请在PHP脚本的开头添加
ob_start()
函数

虽然它会起作用,但我仍然建议您清理代码,不要让数据在应该输出之前就输出。更好的做法是始终了解自己的代码中发生了什么,而不要退回到修补程序解决方案。

在将任何内容返回给访问者之前,请使用
header()
函数

如果在调用
header()
之前无法确定返回内容的位置,请在PHP脚本的开头添加
ob_start()
函数


虽然它会起作用,但我仍然建议您清理代码,不要让数据在应该输出之前输出。更好的做法是始终了解自己的代码中发生了什么,不要退回到修补程序解决方案。

正如其他人所说,您必须在任何其他输出之前发送头(即使用
头()

经常发生的一件事是,有时在关闭PHP标记之后,您会在文件中无意中包含换行符

<?php
/*
 * This is a file of PHP code
 */


/*
 * file ends here
 */
?>

__________________________ (actual end of file)
# unexpected newline above gets sent as output

__________________________(文件的实际结尾)
#上面意外的换行符作为输出发送
为了减少这种情况的发生,您可以故意省略结束的PHP标记。该文件将被解析为PHP直到结束,因此从包含的文件发送虚假换行符或空格的可能性要小得多


根据编辑器的不同,您还可以将其设置为显示空白(回车、空格、制表符),这有助于消除脚本中的意外输出(例如,Eclipse和Notepad++都可以这样做)。

正如其他人所说,您必须在任何其他输出之前发送标题(即使用
标题()

经常发生的一件事是,有时在关闭PHP标记之后,您会在文件中无意中包含换行符

<?php
/*
 * This is a file of PHP code
 */


/*
 * file ends here
 */
?>

__________________________ (actual end of file)
# unexpected newline above gets sent as output

__________________________(文件的实际结尾)
#上面意外的换行符作为输出发送
为了减少这种情况的发生,您可以故意省略结束的PHP标记。该文件将被解析为PHP直到结束,因此从包含的文件发送虚假换行符或空格的可能性要小得多


根据您的编辑器,您还可以将其设置为显示空白(回车、空格、制表符),这可以在试图消除脚本中的意外输出时提供帮助(Eclipse和NotoPad ++都可以这样做)。

1,使用<代码> ObjSista()/<代码>作为带帮助,但+ 1用于确认使用<代码> OBSCAST()作为一个创可贴是一个坏主意。@菲尼克斯,这就是为什么我建议用户尽可能地清理代码,而不是使用OBSCAST()方法。无论如何,如果他被迫快速地解决这个问题,没有时间或无法清理代码,OBSCAST()将工作。我希望你现在取消你的下投票。没有投票;虚拟1被虚拟+ 1取消。-1使用<代码> OBSCAST()/<代码>作为带帮助,但是+1用于确认使用<代码> OBSCAST()。作为一个创可贴是一个坏主意。@菲尼克斯,这就是为什么我建议用户尽可能地清理代码,而不是使用OBSCAST()方法。无论如何,如果他被迫快速地解决这个问题,没有时间或无法清理代码,OBSCAST()会有用的。我希望你现在删除你的否决票。没有否决票;虚拟-1被虚拟+1取消。