找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 32|回复: 0

[维护日志] [2026-06-24] [功能] [举报邮件通知] - 用户举报时创始人邮件通知功能实现

[复制链接]
  • 打卡等级:本地老炮

9337

威望

7448

金钱

1万

贡献

管理员

自由的灵魂

积分
107434
主题
5630
回帖
26661
注册时间
2003-4-10
最后登录
2026-10-2
发表于 2026-6-24 20:40:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

1、问题缘起

论坛举报功能已正常运作,举报数据会写入 common_report 表,并通过站内通知提醒管理员。但创始人(UID 7)无法及时感知新的举报,需要登录后台查看举报列表才能发现,导致举报处理滞后。用户期望当有人提交举报时,创始人能立即收到邮件通知,以便快速响应处理。

讨论过程中发现的相关问题:

问题解决方案
举报内容包含用户名前缀(如 IsaacZ : 测试举报)从 $_POST['message'] 获取原始内容,去除用户名和分隔符
举报处理入口不明确邮件中附上后台举报管理链接
需指定特定创始人接收硬编码 UID 7,从 common_member 表获取邮箱





2、解决方案

(1)简要技术分析:
在举报提交处理逻辑中,当数据成功写入 common_report 表后,通过 C::t('common_member')->fetch(7) 获取创始人信息,调用 sendmail 发送即时邮件通知。

(2)修改文件列表:

操作文件路径
修改/source/module/misc/misc_report.php


(3)关键代码段:

插入位置:在站内通知循环结束后、showmessage('report_succeed') 之前(约第 67-71 行之间)

  1. // ========= 举报邮件通知创始人 =========
  2. $founder_uid = 7;
  3. $founder = C::t('common_member')->fetch($founder_uid);
  4. if ($founder && !empty($founder['email'])) {
  5.     // 举报内容:优先从 POST 获取原始输入,去除可能的用户名前缀
  6.     $raw_content = isset($_POST['message']) ? $_POST['message'] : $message;
  7.     $report_content = preg_replace('/^[^:]+:\s*/', '', trim($raw_content));
  8.     $report_content = htmlspecialchars($report_content);
  9.    
  10.     $report_url = $_G['siteurl'] . 'admin.php?action=report';
  11.     $mail_subject = '【举报通知】有新的举报需要处理';
  12.     $mail_message = "<html><body>";
  13.     $mail_message .= "<p>您好,创始人:</p>";
  14.     $mail_message .= "<p>论坛有一条新的举报,请及时处理。</p>";
  15.     $mail_message .= "<hr>";
  16.     $mail_message .= "<p><strong>举报人:</strong>" . $_G['username'] . " (UID: " . $_G['uid'] . ")</p>";
  17.     $mail_message .= "<p><strong>举报内容:</strong>" . $report_content . "</p>";
  18.     $mail_message .= "<p><strong>举报时间:</strong>" . date('Y-m-d H:i:s') . "</p>";
  19.     $mail_message .= "<p><strong>操作指引:</strong><br>";
  20.     $mail_message .= "请登录后台处理举报:<a href="" . $report_url . "">" . $report_url . "</a></p>";
  21.     $mail_message .= "<p style="color:#999;">(此邮件由系统自动发送,请勿回复)</p>";
  22.     $mail_message .= "</body></html>";
  23.    
  24.     loaducenter();
  25.     include_once libfile('function/mail');
  26.     @sendmail($founder['email'], $mail_subject, $mail_message);
  27. }
  28. // ========= 举报邮件通知结束 =========
复制代码





3、最终实现效果

场景优化前优化后
用户提交举报仅站内通知✅ 创始人邮箱即时收到邮件
举报内容含用户名前缀✅ 仅显示纯举报内容
处理入口需登录后台手动查找✅ 邮件中直接附上后台链接
通知时效可能有延迟即时发送





4、重要技术沉淀

需更新到固化摘要:

  1. 二十一、举报邮件通知(2026-06-24)

  2. 功能:用户提交举报时,即时发送邮件通知创始人(UID 7)
  3. 涉及文件:source/module/misc/misc_report.php
  4. 触发位置:举报数据写入成功后、showmessage 之前
  5. 管理员邮箱:从 common_member 表读取 UID 7 的 email 字段
  6. 后台链接:/admin.php?action=report
  7. 发送方式:即时发送
复制代码


踩坑点:

踩坑正确做法
误以为举报处理文件是 forum_report.php实际在 misc_report.php 中(misc.php?mod=report 入口)
举报内容 $message 包含用户名前缀从 $_POST['message'] 获取原始内容,用正则去除前缀
通知发送给所有管理员仅发送给指定创始人(UID 7),避免打扰无关人员





5、进一步优化可能性

  • 支持多个创始人:将 $founder_uid 改为数组,循环发送给多个创始人
  • 举报详情增强:在邮件中附上被举报帖子的标题和链接(需要额外查询 common_report 表)
  • 后台管理提醒:在创始人登录后台时增加弹窗提醒(已有站内通知,非必需)

不懂就搜!点此搜点拨论坛。如果本坛没有,请尝试点此问AI,或跟帖提问。
发帖前注意看置顶帖。
不定期借助AI对点拨论坛陈年老帖进行挖坟回复,打扰勿怪!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|点拨论坛 |网站地图

GMT+8, 2026-10-2 02:10 , Processed in 0.063055 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表