创新实训(四):用户管理之系统消息
系统消息主要包含用户收到的比赛报名成功的通知或者用户在博客功能中收到的别人的评论和别人评论中@自己的评论,在系统消息中,有跳转来供用户查看相关信息
一.系统展示:
二.相关代码:
1.函数绑定:
php
$reply_form->handle = function(&$vdata) {
global $myUser, $blog, $reply_form;
// 处理回复表单提交的数据
};
这里定义了 $reply_form 对象的 handle 属性,该属性是一个函数,用于处理提交的回复数据。$vdata 是传递给函数的引用,可能用于在处理中修改数据。
2.评论内容处理:
php
$comment = HTML::escape($_POST['reply_comment']);
获取通过 POST 方法提交的评论内容,并使用 HTML::escape 函数进行 HTML 转义,防止 XSS 攻击。
3.处理@提醒功能:
php
list($comment, $referrers) = uojHandleAtSign($comment, "/post/{$blog['id']}");
调用 uojHandleAtSign 函数处理评论中的 '@' 提及,该函数会返回处理后的评论内容和被提及用户的列表 ($referrers)。
4.插入评论到数据库:
php
$reply_id = $_POST['reply_id'];
$esc_comment = DB::escape($comment);
DB::insert("insert into blogs_comments (poster, blog_id, content, reply_id, post_time, zan) values ('{$myUser['username']}', '{$blog['id']}', '$esc_comment', $reply_id, now(), 0)");
$comment_id = DB::insert_id();
将处理后的评论内容插入到 blogs_comments 数据表中。$reply_id 是被回复的评论的 ID,评论的发布时间使用 now() 函数,zan 列默认为 0。DB::insert_id() 获取插入后的评论 ID。
5.通知被提及的用户和评论者:
php
foreach ($referrers as $referrer) {
// 生成包含博客链接的消息内容,并发送给每个被提及的用户
}
遍历被提及的用户列表 ($referrers),生成包含博客链接的系统消息内容,并使用 sendSystemMsg 函数发送通知。
6.发送通知给被回复的评论者和博客作者:
php
$parent = $vdata['parent'];
$notified = array();
if ($parent['poster'] !== $myUser['username']) {
// 发送评论回复通知给被回复的评论者
}
if ($blog['poster'] !== $myUser['username'] && !in_array($blog['poster'], $notified)) {
// 发送博客回复通知给博客作者
}
检查被回复的评论者和博客作者是否已经通知过,如果没有,生成包含博客链接的系统消息,并使用 sendSystemMsg 函数发送通知。
7.设置成功后跳转链接:
php
$reply_form->succ_href = getLongTablePageRawUri($page);
设置回复成功后的跳转链接,通常是跳转回博客评论列表的指定页面,使用 getLongTablePageRawUri 函数生成页面的 URI。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端