2

私の PHP/MySQL サイトの 1 つで、ユニークなmessageIDfromtosubjectmessagetimeおよびisRead.

一般的に、ユーザーが新しいメールを持っていることを確認する最善の方法は何ですか?

誰かがメッセージを送信すると1に切り替わるメインのUsersテーブルに単純なバイナリトリガーを保存し、ページロードごとにその1をユーザーにチェックさせ、ある場合は新しいメールに警告する必要があります(受信トレイに移動するたびに0に設定します)?しかし、それがスパムであり、ユーザーが読む前に削除した場合はどうなるでしょうか?

または、ユーザーが最後に読んだメッセージを保存しmessageid、最新のメッセージをチェックして、最後に読んだメッセージよりも新しいかどうかを確認し、そうであれば警告する必要がありますか? しかし、この情報をどこにどのように保存すればよいのでしょうか?

ページロードごとに新しいメッセージをチェックする必要があることを考えると、別のより効率的な方法はありますか?

ユーザーが自分の受信トレイにアクセスすると、実際にクリックして読んだかどうかに関係なく、受信トレイをチェックしたときに受信トレイにあったメッセージの「新しいメール」が表示されなくなります。

ありがとう!

編集: 一部のユーザーは、Cookie や Javascript さえも持たない非常に基本的な携帯電話から私のサイトにアクセスします。そのことを覚えておいてください。

4

2 に答える 2

1

最善の方法は、stackoverflowのように、htmlソケットを使用してサーバーから通知をプッシュすることです。

jqueryプラグイン

ただし、これはすべてのブラウザーでサポートされているわけではないため、ajaxポーリングにフォールバックする必要があることに注意してください。

スパムについては、可能であれば、スパムチェックが行われた後にのみユーザーに通知することをお勧めします。

設定されたビットでユーザーの隣に保存するソリューションは正しく聞こえます(ビットの代わりに新しいメッセージの数を保存することもできます)

于 2012-05-24T17:05:03.163 に答える
0

ユーザーテーブルに、新しいメッセージの数を保存し、必要に応じて更新します。

AJAXポーリングは、サーバーサイドで高額になるselect count(*) from ... 可能性があります(DBが大きくなると高額になる可能性があり、たとえば、1分に1回のチェックを行う必要があります)。

selectユーザーがWebサイトを閲覧しているだけで、新しいメッセージがない場合は、メッセージに関する詳細情報をスキップできます。

于 2012-05-24T17:09:45.813 に答える