PHP / XHTML。我应该将所有内容放在echo标签中吗?

时间:2010-05-18 08:52:22

标签: php xhtml

一个涉及PHP开发的快速问题,当我开发更复杂的网站时,我似乎越来越想知道这一点。基本上我们说我们有一个基本的PHP / XHTML收件箱(邮件系统)。我在顶部执行检查(检查用户是否已登录,检查用户是否具有正确的权限等)。如果验证失败,则使用'header('location:www.abc.com)'功能。问题是我是否在一个巨大的“其他”块中编写了其余的收件箱代码,或者只使用标准的html。我在某处读到了使用'header'函数后输入任何代码是不好的。

4 个答案:

答案 0 :(得分:4)

只需按照标题

exit();

这不会是一个问题。

see third example here

此外,你不需要像这样的大回声,如果你愿意,你可以像这样回复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结构。