0

我有一个简单的 MySQL 表,用于在具有用 PHP 编写的社交网络功能的 Web 中存储通知。

+----------------------+
| Notifications        |
+----------------------+
| (PK) notification_id |
| user_id              |
| uri                  |
| message              |
| seen                 |
| created_at           |
+----------------------+
  • notification_id是 PK (不言自明)
  • user_id是收到通知的用户 ID
  • uri是用户单击通知时浏览器将转到的内部 URI,主要链接到单个发生的事件页面(例如,当通知是关于有人评论时链接到用户的照片永久链接)
  • message是通知消息
  • seen存储为布尔值,它表示通知是否已被读取(这是这个问题中最重要的部分)
  • created_at只是一个时间戳

我已经完成了大部分通知机制,但剩下的就是可见/不可见的部分。

我只想在顶部导航栏的下拉菜单中显示看不见的通知(就像 Facebook 一样),用户可以单击指向显示所有通知的页面的链接。

放置代码以触发将其标记为已见的最佳位置在哪里?当指定用户已阅读通知内容并进入单个事件页面(即通过单击它)时,应将其标记为“已看到”

我已经想到了一些方法,欢迎使用其他替代方法。

  • 使用 javascript 拦截用户对通知的点击,并在继续通知的 URI 之前发出 ajax 请求以“标记为已见”
  • 在目标 URL 中制作 PHP 脚本以更新数据库中看到的记录。这种方法的问题是单个帖子与通知记录之间 没有关系。
4

1 回答 1

1

如果我处于类似情况(并且我没有实现事件系统),我会让通知链接指向传递脚本。在该脚本中,只需将通知标记为已查看并将用户重定向。由于您的通知和对象不相关,您可以使用 GET 请求参数 (?type=photo&id=1¬ification=1) 来确定哪个对象等。

我不建议使用 Javascript 来执行此操作……在我看来,这太不可靠了。你永远不知道用户是否真的在他们的浏览器上启用了 Javascript 等等。

于 2012-04-07T16:19:32.660 回答