2009-12-18 50 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。