私は自分のサイトのための簡単なフォーラムに取り組んできました。あなたの最後の訪問以来未読の投稿+フォーラムをマークする機能を追加しています。これは私が欲しいことをする良い方法です(PHPで)?
私は本質的に、フォーラムへの最後のアクセス日を各ユーザーアカウントで保存しています。ユーザーがサイトに戻ったときには、post_idとpost_parent_forumの値をすべて取得するためにクエリが実行され、配列に追加されます。その値は、SESSION変数に格納され、キーはpost_id(一意です)フォーラムのIDです(ポストはいくつかのフォーラムに表示されるので一意ではありません)。
フォーラムのインデックスでは、各フォーラムでin_array()を使用して、forum_idが配列内にあるかどうかを確認します。そうであれば、「未読」とマークされます。
スレッドリストでは、array_key_exists()を使用して、各スレッドIDのキーが配列内にあるかどうかを確認します(存在しない場合)。
投稿を表示すると、アイテムはスレッドのIDと等しいキーで配列から削除されます。
この方法は合理的ですか、フォーラムが普及したら問題にぶつかりますか?私は各フォーラムのリストで20個のarray_key_exists()チェックを実行することを心配していました。合理的に速いですか?
私はSESSIONストアドアレイで直接作業することはできますか?通常の変数にその値を割り当て、キーを削除し、古いセッション変数を設定解除してから再設定する必要がありますか更新された配列で?
ユーザーがログオンしてからログオフしてからログオンした場合、これは機能しますか?すべての投稿が「読んだ」とマークされるのではないでしょうか? – peirix
いいえ、最後のアクセスのタイム・スタンプは引き続きアカウントに保存されるためです。したがって、最後のアクセス以降に追加されたアイテムのみ(この例では1分前)です。 –
「あなたの最後の訪問以来」とは、最後のページリフレッシュではなく、最後に成功したログイン(現在のものより前のログイン)以降を意味します。 – stefs