优雅的编码,如何处理隐藏/不可见的HTML代码?

时间:2009-12-18 04:17:51

标签: php html readability

我正在开发一个问答网站。每个答案旁边都有一个“选择最佳答案”按钮,该按钮应该对提问者可见,但对其他观众应该是不可见的。网页的其他部分几乎相同。那么我该如何编码这个网页呢?我应该每次检查查看者身份以确定该按钮是否应该可见。如果问题有很多答案,除了提问者之外,观众中隐藏着许多按钮。这种编码是否会浪费大量额外带宽?我认为这种编码有点可疑。有没有更好的方法呢?

“添加评论”按钮也存在同样的问题。在下方有一个“添加评论”按钮和一个隐藏的<form><textarea></textarea></form>,如果有20个答案,则会有20个隐藏<form></form>,隐藏的代码会大大增加HTML文件的大小。有一种优雅的方式吗?

对于“添加评论”按钮,任何登录的用户都可以添加评论,因此没有身份差异。那么如何处理这个问题?

4 个答案:

答案 0 :(得分:5)

这种类型的东西不是浪费带宽,不是。是的,如果目前正在查看该页面的用户可以使用这些控件,那么您应该只在页面上包含这些控件,因此请务必检查您登录的用户(如果他们已登录)用户是谁以及他们的关系是什么他们正在查看的项目。

这可以很简单:

if ($current_user_id == $question_asker_id) {
  // show 'accept as best answer' form
}

在允许对任何内容进行任何更改之前,请务必检查服务器端的表单数据。

答案 1 :(得分:5)

你不应该隐藏 HTML,你应该不包含 HTML。即在服务器上,你正在做这样的事情:

if ($loggedIn && $user == 'asker') {  // pseudocode
    echo acceptButton();  // outputs the HTML for the button
}

非提问者用户甚至不会在浏览器中收到接受按钮的HTML。

答案 2 :(得分:2)

  

我是否应该每次检查查看者身份以确定该按钮是否可见。

是,检查然后不显示按钮。此外,您还应该检查按钮被按下后,一旦您处理该动作,它就不是提出它的提问者,因为这很容易被滥用。

答案 3 :(得分:1)

如果你关注20个占用大量空间的小型表格(提示,它们没有,大多数服务器压缩它们的输出,所以额外的表单几乎被压缩掉了),只需使用简单的链接。

对于隐藏只是使用if测试,你应该检查用户的身份来执行此操作。这个单一if语句的开销(即使运行了20次)几乎为零。

“过早优化是所有邪恶的根源” - 学习这一点,活下去。

执行此操作的“优雅”方式是(伪代码):

foreach($answers as $answer)
{
    // Print answer here
    if($current_user == $question_asker)
    {
        echo "button form here";
    }
    echo "comment form here";
}