• 1606阅读
  • 29回复

关于论坛提示有新站内信(通知),却不能查看的问题 [复制链接] [手机版]

上一主题 下一主题
离线zhangjingyu

只看楼主 倒序阅读 使用道具 绿 楼主  发表于: 2020-06-10 22:37:56 星期三
关键词: 论坛
前几天,顾兄提到:
论坛里消息总是提示有1条新站内信,1个新通知,我看了好多次,没有新的了,我刚刚把所有的消息和通知都删除了。还是在右上角有提示。
http://www.vtu425.com/read.php?tid=3667&ds=1&page=4#34332


试着让顾兄点击论坛页面最下面“清除Cookies”和清空浏览器缓存,问题依旧。所以昨天晚上花时间研究了下。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 沙发  发表于: 2020-06-10 22:51:13 星期三  点亮(0)
备份数据,下载,恢复到本地测试论坛,修改密码,登录,问题再现(这个很重要)。

首先研究后台。经过尝试,在消息管理里删除站内信,可以让提示不再出现。但显然这不是最好的办法,我们要知其然,知其所以然。

查看后台消息管理模板文件,希望从文件方面入手,但追踪了一番,没有突破。那就从数据表入手吧,因为论坛所有数据都在各个数据表中。

通过对比后台删除站内信前后所有备份文件,共22个,发现:虽然只是小小的改动,没想到还是有相当多的不一样的地方,所以这样比较下去,根本看不出来问题可能在哪里。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 板凳  发表于: 2020-06-10 23:15:41 星期三  点亮(0)
查看后台数据表,发现有几个“pw_ms_”开头的数据表应该跟消息有关,所以打开数据库管理软件查看。

pw_ms_relations,后台注释为“消息关系体表”,就是和消息有关的关系表吧,像索引、目录一样。查看和顾兄有关的数据,删除站内信前有205条,删除后剩下146条,显然这里也不能发现问题。

其结构如下(未截完整,也就是还有其它字段):rid(序号)    uid(用户id)    mid(消息id,非常重要,通过对应id可以在另外一个表pw_ms_messages里查看到对应内容)    categoryid(不知道,没研究)    typeid(应该是消息类型)    status(状态,已读或未读)    isown(这个也不清楚含义。2022年8月19日补充更新:看5楼帖子内容,isown应该是“是否是所有者”的意思,也就是“是不是消息发送方”,应该是这样)。其中的typeid字段应该是消息类型,有100,105,200等,它们是什么意思呢,或者对应什么样的消息类型?

通过追踪,在lib/message/message/base.ms.php文件中,
  1.     /**
  2.      * 基础配置类型地图
  3.      * @return unknown_type
  4.      */
  5.     function maps() {
  6.         return array($this->_sms => 1,
  7.                     $this->_sms_message => 100,$this->_sms_rate => 101,$this->_sms_comment => 102,
  8.                     $this->_sms_guestbook => 103,$this->_sms_share => 104,$this->_sms_reply => 105,
  9.                     $this->_notice => 2,
  10.                     $this->_notice_system => 200,$this->_notice_postcate => 201,$this->_notice_active => 202,
  11.                     $this->_notice_apps => 203,$this->_notice_comment => 204,$this->_notice_guestbook => 205,
  12.                     $this->_request => 3,
  13.                     $this->_request_friend => 300,$this->_request_group => 301,$this->_request_active => 302,$this->_request_apps => 303,
  14.                     $this->_groupsms => 4,
  15.                     $this->_groupsms_colony => 400,$this->_groupsms_normal => 401,
  16.                     $this->_groupsms_shield => 402,$this->_chat => 5,$this->_history => 0);
  17.     }
竟然有这么多种,真是不可想像啊!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 地板  发表于: 2020-06-10 23:22:49 星期三  点亮(0)
接着看其它字段,发现status字段有两条值为1的数据,难道是未读的意思?查看对应的mid分别为3973和4007,typeid分别为200和105,再看上面的函数分别对应$this->_notice_system,字面大概是系统提示(“通知”?)和$this->_sms_reply,字面大概是回复通知,很可能就是“站内信”。看看pw_ms_messages对应的mid字段有没有对应数据就知道了,如果没有对应记录,可能就是这里的问题了。因为没有对应数据,所以提示有未读消息(站内信),但无法显示具体消息内容。

通过查看,果然两个都没有!正确!02:03 2020-6-10
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 4楼 发表于: 2020-06-10 23:34:24 星期三  点亮(0)
大致是这样:pw_ms_relations表里记录有2条未读消息(typeid分别为200和105,很可能分别对应通知和站内信),也就是status字段的值为1。本来pw_ms_messages表里应该是有对应具体的消息内容的,但可能顾兄没有阅读消息(未读状态)就把消息删除了,也就是pw_ms_messages表相应数据已经删除了,但pw_ms_relations表里的记录数据还在,也就是有未读消息(所以论坛会提示),但由于对应消息内容已经删除了,所以无法点击查看。由于无法查看,不能变成已读,所以一直显示。这可能就是一个bug,程序设计上的问题。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 5楼 发表于: 2020-06-10 23:55:44 星期三  点亮(0)
昨晚,准确说是今天凌晨进行了一次测试。
46楼 发表于: 2020-06-10 01:58:45
已经基本知道是怎么回事了,太晚了,稍后更新。
今晚就研究这个了。


pw_ms_relations表截图,消息mid为4280,是顾兄发给我的(zhangjingyu)。序号有两个,分别为5210和5211,我是接收方,未读(红圈所示);顾兄是发送方,已读。


这是pw_ms_messages表里记录的具体消息内容。


论坛里的样子,位于发件箱。


登录我的帐号,有一条未读站内信,那就看看吧。


pw_ms_relations表的变化。原来的记录数据序号5210状态变为0(对方已经阅读该消息)。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 6楼 发表于: 2020-06-11 00:20:55 星期四  点亮(0)
回复4楼 zhangjingyu 的帖子
zhangjingyu 大致是这样:pw_ms_relations表里记录有2条未读消息(typeid分别为200和105,很可能分别对应通知和站内信),也就是status字段的值为1。本来pw_ms_messages表里应该是有对应具体的消息内容的,但可能顾兄没有阅读消息(未读状态)就把消息删除了,也就是pw_ms_messages表相应数据 .. (2020-06-10 23:34)   
经过两次本地测试,消息未阅读就直接删除,删除的是pw_ms_relations表里的记录数据,而且删除后一切正常。而顾兄遇到的问题是有提示,但无法查看。不过,知道了问题出在哪里,自然就有解决问题的方法。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 7楼 发表于: 2020-06-11 00:28:12 星期四  点亮(0)
已经用php文件删除了pw_ms_relations表里和你有关的两条未读消息记录,看看是否已经解决问题了(如果没解决,清空浏览器缓存再刷新一次看看)。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 8楼 发表于: 2020-06-11 00:34:19 星期四  点亮(0)
又不早了,睡觉。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线未来首先

只看该作者 9楼 发表于: 2020-06-11 10:10:36 星期四  点亮(0)
慢慢研究不急啊,
一个人的生命中,应该以:
上帝第一
家庭第二
事业第三
为生活的优先次序。