0

私は PHP と MySQL を使用して Web サイトを作成しており、現在、通知を処理するページに取り組んでいます (たとえば、誰かがあなたの投稿にコメントすると、その旨の通知が届きます)。通知はメールではなく、アカウントにログインしたときに Web サイトのアラートとして送信されます (Facebook スタイル)。

今、私の問題は、通知をいつ既読としてマークするかを決定することです。要するに、発生後に通知が読まれたことを確認でき、それを既読に変更できるイベント (クリック、ビューなど) とは何ですか?

4

1 に答える 1

0

しかし、私はすでにそれを回避する方法を手に入れました。誰かに役立つかもしれないことを共有させてください: すべてのアラートは、ユーザーを特定の URL に誘導する必要があります。たとえば、誰かがあなたの投稿にコメントした場合、アラートをクリックすると、「www.example.com/posts/? post_id=5". これをターゲット URL と呼びます。アラートを生成するとき、ターゲット URL をアラートの詳細と共にアラート テーブルに保存し、AI の一意のフィールド (alert_id) を取得します。これを使用して、アラートのリンクの href 部分を生成<a href="changetoread.php?alert_id=56">G Thuo</a>します (投稿にコメントした場合など)。 . これが私のアプローチです。アラートをクリックすると、最初にそのステータスが読み取りに変更された場所に移動します(リンクのalert_idに基づいて)。read に変更したら、テーブルからターゲット URL をフェッチし、ユーザーをそこにリダイレクトします。ここに私のコードがあります:

$alert_id=$_GET['alert_id'];
$user_id=$_SESSION['user_id'];
//create the SQL to update the read_status
$sql="UPDATE alerts_log SET read_status=1 WHERE alert_id=$alert_id AND user_id=$user_id";
$res=mysql_query($sql) or die(mysql_error());
//we can now extract the targer_url from the alerts table and redirect the user automatically to that URL
$sql="SELECT target_url FROM alerts WHERE alert_id=$alert_id";
$res=mysql_query($sql) or die(mysql_error());
$row=mysql_fetch_assoc($res);
$url=$row['target_url'];
//redirect the user to that URL
header("Location: $url");

`

于 2012-12-18T09:12:07.943 に答える