PHP头位置:由脚本确定的URI

PHP头位置:由脚本确定的URI,php,Php,PHP脚本(用于预订活动)退出到HTML页面,显示“感谢您的预订”等消息,其中通常包含: header ("Location: http://www.thankyou.com/") 在剧本的开头 脚本现在还需要退出到其他HTML页面(“对不起,没有可用空间”等),页面URI仅在脚本的后面确定。它可能会发出更多的头函数调用来替换原始头,但这使得它容易受到意外插入空格的攻击。 这必须是一个共同的要求;实现它的最佳方法是什么?只要不发送输出,您就可以在脚本中的任何位置设置标题(包

PHP脚本(用于预订活动)退出到HTML页面,显示“感谢您的预订”等消息,其中通常包含:

header ("Location: http://www.thankyou.com/")
在剧本的开头

脚本现在还需要退出到其他HTML页面(“对不起,没有可用空间”等),页面URI仅在脚本的后面确定。它可能会发出更多的头函数调用来替换原始头,但这使得它容易受到意外插入空格的攻击。
这必须是一个共同的要求;实现它的最佳方法是什么?

只要不发送输出,您就可以在脚本中的任何位置设置标题(包括用于重定向的
位置
标题)。没有其他更好的解决办法。当然,您通常只需要执行确定重定向目标所需的操作,然后立即重定向并退出脚本,因此重定向将位于脚本的开头

您还应该将重定向放置在一些可预测的位置,例如控制器对象或请求验证函数中。将重定向分散在许多不相关的地方不是一个好主意,比如在许多嵌套函数调用中


如果意外空格有问题,您应该修复脚本或使用函数来缓冲意外输出,并仅在发送所有必要的标头后刷新它。

在执行所有逻辑后定义标头?标题的唯一规则是在定义它们之前不应该有输出。