2009-12-18 89 views
0

我正在开发一个问答网站。除了每个答案之外,还有一个“选择最佳答案”按钮,该按钮应该对提问者可见,但对其他观众应该是不可见的。网页的其他部分几乎相同。那么我怎样才能编码这个网页?我应该每次检查查看器身份以确定是否应该看到按钮。如果问题的答案很多,除了提问者之外,还有许多按钮隐藏。这种编码会浪费很多额外的带宽吗?我认为这种编码有点可疑。有没有更好的方法来做到这一点?优雅的编码,如何处理隐藏/隐藏的HTML代码?

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

至于“添加评论”按钮,任何登录的用户都可以添加评论,所以没有身份鉴别。那么如何处理这个问题呢?

+0

你在做它的乐趣或者是它极大地从堆栈交易所不同? – 2009-12-18 04:20:01

+1

你打算如何实施这个?所有这些形式在哪里?你有数据库来支持它吗?你在用什么语言? – slimbo 2009-12-18 04:21:23

+0

我使用PHP + MySQL。 – Steven 2009-12-18 04:27:13

回答

1

如果你关心的是20个小表单,它们占用很多空间(提示,他们不这样做,大多数服务器压缩它们的输出,所以额外的表单几乎被压缩掉了),只需使用简单的链接。

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

“不成熟的优化是万恶之源” - 学习这一点,活下去。

的“优雅”的方式来做到这将是(伪):

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

为什么在使用php的时候使用伪代码? – Sneakyness 2009-12-18 04:43:58

+1

因为我几乎没有记得PHP(尽量避免它),我不知道他的输出的细节,我很懒:P – 2009-12-18 04:49:07

2

我应该检查浏览器的身份,每次确定按钮是否应该可见。

是的,检查,然后不显示按钮。此外,您还应该检查按钮是否被按下,并且一旦您处理该操作,它不是发起者,因为这很容易被滥用。

5

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

这可能是那样简单:

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

一定得允许任何改变任何东西之前检查服务器端表单数据。

+0

但是如何隐藏“添加评论”输入框? – Steven 2009-12-18 04:30:29

+1

如果这是所有用户都应该访问的内容,请将其包含在内。 – Sampson 2009-12-18 04:36:54

5

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

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

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