0

私は質疑応答のウェブサイトを開発しています。各回答のほかに「ベストアンサーとして選択」ボタンがあります。このボタンは質問者には表示されますが、他の視聴者には表示されないようにする必要があります。Webページの他の部分はほとんど同じです。では、このWebページをどのようにコーディングできますか?ボタンを表示するかどうかを判断するために、視聴者のIDを毎回確認する必要があります。質問に対する回答が多い場合は、質問者以外の視聴者からは見えないボタンがたくさんあります。この種のコーディングは多くの余分な帯域幅を浪費しますか?そして、この種のコーディングは少し怪しいと思います。それを行うためのより良い方法はありますか?

同じ問題が「コメントの追加」ボタンにも当てはまります。すぐ下に[コメントを追加]ボタンと非表示があります。<form><textarea></textarea></form>回答が20ある場合、非表示は20<form></form>になり、非表示のコードはHTMLファイルのサイズを大幅に増やします。代わりにエレガントな方法はありますか?

「コメント追加」ボタンに関しては、ログに記録されたユーザーなら誰でもコメントを追加できるため、IDの区別はありません。では、この問題にどのように対処するのでしょうか。

4

4 に答える 4

5

このタイプのものは、帯域幅の無駄ではありません。はい、現在ページを表示しているユーザーがこれらのコントロールを使用できる場合にのみ、これらのコントロールをページに含める必要があります。そのため、ログインしている(ログインしている場合)ユーザーが誰であり、それらの関係が何であるかを必ず確認してください。彼らが見ているアイテムに。

これは次のように簡単です。

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

変更を許可する前に、サーバー側のフォームデータも確認してください。

于 2009-12-18T04:20:33.620 に答える
5

HTMLを非表示にすることは想定されておらず、HTMLを含めることは想定されていません。つまり、サーバー上では、次のようなことをしています。

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

質問者以外のユーザーは、ブラウザの承認ボタンのHTMLを受け取ることさえありません。

于 2009-12-18T04:24:49.700 に答える
2

ボタンを表示するかどうかを判断するために、視聴者のIDを毎回確認する必要があります。

はい、確認してからボタンを表示しないでください。さらに、ボタンが押された後、そのアクションを処理した後、それが簡単に悪用されるため、それを開始したのは質問者ではないことも確認する必要があります。

于 2009-12-18T04:20:17.820 に答える
1

20 個のマイナー フォームが多くのスペースを占有することに関心がある場合 (ヒント、ほとんどのサーバーは出力を圧縮しないため、余分なフォームはほとんど圧縮されません)、単純なリンクを使用してください。

非表示にするには、if テストを使用するだけです。これを行うには、ユーザーの身元を確認する必要があります。この 1 つの if ステートメントのオーバーヘッドは (20 回実行されたとしても) ほぼゼロです。

「時期尚早の最適化は諸悪の根源です」 - これを学び、これを生きましょう。

これを行うための「エレガントな」方法は次のようになります (疑似コード):

foreach($answers as $answer)
{
    // Print answer here
    if($current_user == $question_asker)
    {
        echo "button form here";
    }
    echo "comment form here";
}
于 2009-12-18T04:34:33.013 に答える