Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] 解决留言板BUG:回复的留言显示在对方的留言板了

[复制链接]
magentoon 发表于 2015-7-5 17:57:21 | 显示全部楼层 |阅读模式
本帖最后由 magentoon 于 2015-7-5 18:00 编辑

个人空间的留言板逻辑有几个问题,最明显的问题是回复留言的显示。
如果客人来留言了,显示在主人的留言板。如果主人给这条留言回复一下,正确的思路应该是这条回复显示在主人的留言板列表,紧接着客人的留言。这样客人留言、主人回复,内容是上下连接的,大家看起来是明白的。
BUG表现:客人的留言显示在主人的留言板,但主人的回复却没了,跑到客人的留言板上去了。
大家看留言的时候就莫名其妙:主人那里没回复,客人那里多几条回复却不知道为什么突然冒出来的。

造成这个BUG的原因是写数据表的时候,把id判断错误。
home_comment这个表中,有三个身份字段,留言作者--authorid、被留言或被回复的对象--uid、留言归谁所有--id
按正确的逻辑,客人来留言,应该属于主人的留言板,ID=主人的UID;主人回复留言,这条也属于主人的留言板,还是ID=主人的UID。
BUG就在这里了:当主人回复留言时,ID记成了客人的UID,也就是原作者的UID,把回复当成客人的了,当然就跑客人的留言板上去了。
修正方法:
\source\function\function_comment.php文件,第46行,把
  1. $id = $comment['authorid'];
复制代码
改成
  1. $id = $_G['uid'];
复制代码
这样逻辑就正确了,留言板上显示的内容全是对的。

这样修正以后,被留言的提醒那里,相应也需要修改,不然点开提醒后看不到留言内容。也就是把被留言对象的UID和链接都改正确。


neol123 发表于 2015-7-12 13:08:24 | 显示全部楼层
很早就看到这个bug了  。其实 就是他们设计人员的逻辑问题 我不知道他们设计之初是怎么考虑的。


没想到你注意到并且修复了。
按照你这个我去修复看看。

你这个没修改完整吧。被留言提醒哪里 是在哪儿修改啊?好人做到底。你也顺便说下呗
被留言的提醒那里,相应也需要修改,不然点开提醒后看不到留言内容。也就是把被留言对象的UID和链接都改正确。

回复

使用道具 举报

 楼主| magentoon 发表于 2015-7-12 13:42:41 | 显示全部楼层
neol123 发表于 2015-7-12 13:08
很早就看到这个bug了  。其实 就是他们设计人员的逻辑问题 我不知道他们设计之初是怎么考虑的。

哦,我连续写了两个纠正BUG的帖子,几天也没人看,都懒得继续写。
完整代码我会放在我自己的论坛里
回复

使用道具 举报

 楼主| magentoon 发表于 2015-7-12 23:10:34 | 显示全部楼层
neol123 发表于 2015-7-12 13:08
很早就看到这个bug了  。其实 就是他们设计人员的逻辑问题 我不知道他们设计之初是怎么考虑的。

提醒这个代码,我把帖子写好了:http://gedong.net/thread-605-1-1.html
回复

使用道具 举报

neol123 发表于 2015-7-13 08:29:07 | 显示全部楼层
magentoon 发表于 2015-7-12 23:10
提醒这个代码,我把帖子写好了:http://gedong.net/thread-605-1-1.html

OK  去拜读中!
感谢!

回复

使用道具 举报

neol123 发表于 2015-7-13 21:20:31 | 显示全部楼层
magentoon 发表于 2015-7-12 23:10
提醒这个代码,我把帖子写好了:http://gedong.net/thread-605-1-1.html

按照你的这个修改了  有问题。我的是x3.1最新版的。

第一个修改。让自己的留言显示在对方的留言板上。而不是官方的自己说的留在对方留言板上,这个修改是可以的。
但是出现问题。只能彼此回复对方留言一次。不能接着回复第二次甚至更多次都不行。

第二个修改。留言收到通知提醒的问题。这个需要修改2个地方,修改第一个地方的时候可以解决问题,修改第二个的时候直接无法留言了。出现问题,不知道问题在哪儿!

所以总体来看还是有问题的!


官方自身的那个设计逻辑 :给谁留言就显示在谁的留言本上。不管是新留言还是回复留言,A给B留言就显示在B的留言本上。B回复A的留言又显示在A的留言本上去了。  第三者去看这个留言的时候,要想看留言对话连贯性的话那么就要分别去A和B的留言本2边跑才可以看完。可能官方设计之初 就是想着,A和B的留言压根就没想第三者去看。就是收到提醒2人自己知道说的什么就可以了。只是不知道这个是否真的好。

其实现在的问题就是。解决这个问题 将逻辑更改为:A给B留言的话就显示在B的留言本上。B直接回复A给他的这条留言其实也就应该显示在B的留言本上并且以回复引用的方式显示在A给B的这留言下面排列才对。

所以这个还是需要更改下。。。

我测试你那个修改好像不是很行。你可以再测试看看
回复

使用道具 举报

 楼主| magentoon 发表于 2015-7-14 10:41:17 | 显示全部楼层
neol123 发表于 2015-7-13 21:20
按照你的这个修改了  有问题。我的是x3.1最新版的。

第一个修改。让自己的留言显示在对方的留言板上。 ...

我的测试都没问题
第三次引用回复是没必要的,客人来留言,主人回复。客人认为还有话讲就继续留言,反正主人能收到提醒。这就跟回帖时,引用第一帖不显示引用文字是一个思路。
留言板肯定是展示给第三方阅读的,特别是回答咨询、商品讨论之类的。如果只是两人交流,完全可以用站内短信。
回复

使用道具 举报

neol123 发表于 2015-7-14 11:20:30 | 显示全部楼层
magentoon 发表于 2015-7-14 10:41
我的测试都没问题
第三次引用回复是没必要的,客人来留言,主人回复。客人认为还有话讲就继续留言,反正 ...

不是说引用。
而是说无法直接在第二次回复上 点击回复对方的话。需要另外重新在对方留言板上新留言。

另外
http://gedong.net/thread-607-1-1.html
[DZ] 让DZ手机版的作者头像不单占帖子内容的左列(DZ8)


你这个修改,是修改touch/forum/viewthread.htm
下这个文件对么?
我看你文件修改只是将一个div的位置先后颠倒了下。

按照这个修改  好像不行。。。

回复

使用道具 举报

 楼主| magentoon 发表于 2015-7-14 18:44:05 | 显示全部楼层
neol123 发表于 2015-7-14 11:20
不是说引用。
而是说无法直接在第二次回复上 点击回复对方的话。需要另外重新在对方留言板上新留言。

...

都是行的
回复

使用道具 举报

wodedzzh 发表于 2015-7-31 22:06:43 | 显示全部楼层
真心不错,刚建站发现了这个BUG,在这里找到解决办法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 11:05 , Processed in 0.028566 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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