本人回复自己的反馈不发通知信

用户:「他自己回复他自己的反馈,不要再给他发邮件了 ——
      他自己说的,他发给他自己,不是很奇怪吗?但如果是别人回复他的,就可以发。」

原逻辑在 mailer 里有个「自己通知自己」判断,但写成了:
  !empty($extra["is_admin"]) === false
双重否定绕,读起来要停一下才知道在判什么,而且没有覆盖空格差异。

改法:
- 改成直接判 $isAdminNotice,条件意图一眼可见
- 邮箱比较前 trim + strcasecmp,覆盖 大小写不同 / 前后空格 两种写法
- 拦下时写 notify_log 并给出明确原因「本人回复自己的反馈,不发信」,
  以后排查「为什么没收到信」能直接看到

验证(5 种情形 + 完整 DB 路径):
  同邮箱 → 拦下;大小写不同 → 拦下;带空格 → 拦下;
  别人邮箱 → 正常发;管理员邮箱 → 正常通知提交人。
  另在库里真插一条本人回复走 fb_notify_event,同样被拦下。

关于「带 token 能否修改原反馈」:确认后决定不做。
理由:反馈一旦公开,别人已看过/回复过,改了会让讨论对不上号;
补充信息用回复完全够用。现状只能看和回复。
This commit is contained in:
2026-11-03 10:48:07 +08:00
parent 8b3e49e091
commit 0dc8033c6b
2 changed files with 22 additions and 7 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ if (!defined('FB_ROOT')) {
define('FB_ROOT', dirname(__DIR__));
// 静态资源版本号:改 assets/ 下的 css/js 后把这个数字 +1,
// 让浏览器与 CDN 缓存失效。全站只此一处,别再往页面里写死数字。
if (!defined('FB_ASSET_V')) { define('FB_ASSET_V', 31); }
if (!defined('FB_ASSET_V')) { define('FB_ASSET_V', 32); }
}
/* ------------------------------------------------------------------