用来做博客比赛的OBLOG出问题了:一个用户的积分一夜之间下降2/3。
一开始以为只有一个用户受到影响,也许是数据存储的时候发生了错误,于是手工修改积分。但是按“修复用户”后,数字又降低了,说明是程序机制有问题。把数据库下到本地逐个解读,没发现什么问题。测试发了几个帖子,加了几个精华,分数的增长很正常,但是一修复用户数据就错误,于是把问题的症结缩小在修复用户数据的功能上。于是去OBLOG看论坛,最新的补丁有修复一个评论的统计错误,于是猜想可能是针对用户的统计程序计算公式出了问题。
由于不懂ASP程序,所以只能靠猜测去查找问题。看了下修复按钮的URL链接,首先打开m_user.asp这个功能程序,在最末尾发现了数据相加的代码。经过仔细分析,发现问题可能是在对分数项目的设置上,由于没有参数说明,因此不知道Oblog.CacheScores(7)是否是精华贴的分数设置。看了积分计算公式的其他参数后,猜想积分设置页面的输入框可能有与此对应的ID号,一查,果然。
问题解决,从积分设置页面的输入框ID判断,m_user.asp结尾的加法公式是错误的。精华的ID应该是9而不是7。
Oblog.CacheScores(7)*bests
应该为
Oblog.CacheScores(9)*bests
其他的也要做相应调整。因为我不懂程序,所以我只调整了这个和我有关的数字,其余无关的参数删除。结果终于正确了。
在积分设置页面,看到了几个隐藏的输入框,不知道为什么不显示出来,难道是给商业版用户准备的?反正现在的功能够用,也就不理会那么多了。