一个涉及PHP开发的快速问题,当我开发更复杂的网站时,我似乎越来越想知道这一点。基本上我们说我们有一个基本的PHP / XHTML收件箱(邮件系统)。我在顶部执行检查(检查用户是否已登录,检查用户是否具有正确的权限等)。如果验证失败,则使用'header('location:www.abc.com)'功能。问题是我是否在一个巨大的“其他”块中编写了其余的收件箱代码,或者只使用标准的html。我在某处读到了使用'header'函数后输入任何代码是不好的。
答案 0 :(得分:4)
只需按照标题
exit();
这不会是一个问题。
此外,你不需要像这样的大回声,如果你愿意,你可以像这样回复html:
<?php
//php stuff
if(test){
?>
html here
<?php
}
else{
?>
other html
<?php
}
?>
答案 1 :(得分:1)
你读它不好的原因是,客户 没有尊重Location: abc
标题 - 所以如果你继续向他们发送数据,他们可能只是展示它,也许是可以窥探您的用户数据。
您可以做的是,在发送Location: abc
标题后,您只需退出脚本,如下所示:
if(!$user->is_authenticated()) {
header("Location: abc");
exit();
}
答案 2 :(得分:1)
在标题重定向之后,你放了一个胖“返回”或“退出”,所以你的脚本在那里终止,然后你关闭if。然后你可以像往常一样愉快地编码。
在header()调用之后你不应该放任何东西。但是,您应该记住,如果在标题调用之前输出任何内容,脚本将失败。有些标头需要您进行编码,例如Content-type标头。在重定向标头之后,你应该总是进行一次exit()调用,以防浏览器不遵守指令。
答案 3 :(得分:1)
我在某处读到了使用'header'函数后输入任何代码是不好的。
这并不完全正确,因为在发送标头之前,不允许将输出(HTML或原始输出)发送到浏览器。当您在发送标题之前发送输出时,您将收到“已发送标题”错误。
在头函数之后,其余部分不会执行,因此不需要返回或退出。
关于是否需要将所有内容放在if / else结构中的问题:这也不是必需的,您唯一需要做的就是基本检查是否有人登录,如果没有,您将执行重定向使用标题功能。不需要广泛的if / else结构。