0

我正在使用 PHP 和 MySQL 创建一个网站,目前正在处理一个处理通知的页面(例如,当有人对您的帖子发表评论时,您会收到通知)。当您登录您的帐户(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)。将其更改为读取后,我们从表中获取目标 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 回答